0

Grails Maven プラグインを使用して war ファイルを作成しようとしています。このプラグインには範囲の依存関係が解決されないという既知の問題があり、私のプロジェクトの pom ファイルには範囲の依存関係が含まれている必要があります。

依存関係は次のように指定されます。

<dependency>
  <groupId>mygroup</groupId>
  <artifactId>myartifact</artifactId>
  <version>[0.0.0,999.999.999)</version>
</dependency>

エラーメッセージは次のようになります。

[エラー] Failed to execute goal org.grails:grails-maven-plugin:2.2.1:clean (default-clean) on project sdm: Failed to create classpath for Grails execution. 実行に備えて、実行可能ファイルの依存関係を解決する際に問題が発生しました。プロジェクト アーティファクトの解決中にエラーが発生しました: アーティファクト mygroup.myartifact:pom:[0.0.0,999.999.999) を myRepo ( https://maven.mydomain/nexus/content/groups/myRepo ) から転送できませんでした: プロジェクト mygroup.myartifact の IllegalArgumentException :pom:[0.0.0,999.999.999): インデックス 89 のパスに不正な文字があります: https://maven.mydomain/nexus/content/groups/myRepo/mygroup/myartifact/[0.0.0,999.999.999)/myartifact-[ 0.0.0,999.999.999).pom -> [ヘルプ 1]

ご覧のとおり、範囲の依存関係は解決されておらず、リテラル バージョン "[0.0.0,999.999.999)" が検索されています。

この問題を回避するには、Maven バージョンのプラグインを使用して次のようにします。

  1. mvn versions:resolve-ranges [pom ファイルの範囲 deps を実際のバージョンに置き換えます]
  2. mvn grails:war [新しく変更された pom ファイルの実際のバージョンに基づいて war をビルドします]
  3. mvn versions:revert [pom ファイルを元の状態に戻す]

しかし、ここに私の問題があります:これらの目標を1つのMavenコマンドに組み合わせると:

mvn versions:resolve-ranges grails:war versions:revert

grails:war は上記のエラーで失敗します。バージョン プラグインが pom ファイルを実際のバージョン番号で更新したにもかかわらず、pom ファイルが初期状態 (範囲依存関係あり) で表示されているようです。失敗後、pom ファイルには次のように表示されます。

<dependency>
  <groupId>mygroup</groupId>
  <artifactId>myartifact</artifactId>
  <version>2.1.15</version>
</dependency>

だから私の質問は - なぜ 2 番目のゴール (grails:war) は、ゴールが実行されたときではなく、ゴールのチェーン全体の開始時に pom ファイルを見るのですか? 最初の目標 (versions:resolve-ranges) の完了後に、2 番目の目標 (grails:war) に pom ファイルをそのまま表示させるにはどうすればよいですか?

4

0 に答える 0