0

コードの作成に Maven を使用しています。以下のようなモジュールベースのmaven構造を作成しました

  • 親 POM
    • サブ親 1
      • SP1_子1
      • SP1_子2
      • SP1_子3
    • サブ親 2
      • SP2_子1
      • SP2_子2
      • SP2_子3

すべてのモジュール バージョンと外部依存関係のバージョンは、親 POM で維持されます。完全な mvn インストールを実行するとすべて正常に動作しますが、SP1_Child1 などの 1 つのサブ モ​​ジュールをビルドしようとすると、依存関係のバージョンを識別できないため、ビルドが失敗します。ローカル マシンで Maven リポジトリを確認したところ、すべてのモジュールがインストールされていましたが、.POM ファイルにはバージョン番号がありません。これはおそらく、親 POM 上の mvn install が ${module.version} を子モジュールの実際のバージョンに置き換えていないためです。

親 POM

<project ..>  

  <groupId>the.company.project</groupId>
  <artifactId>Parent-POM</artifactId>
  <version>1.0-SNAPSHOT</version>
  ...

  <properties>
     <module.version>1.0</module.version>
  </properties>

</project>

SP1_子1

<project ..>  

  <parent>
  ...
  </parent>

  <groupId>the.company.project</groupId>
  <artifactId>SP1_Child1</artifactId>
  <version>${module.version}</version>
  ...

</project>

mvn install で maven リポジトリの .POM ファイルのバージョンを更新するにはどうすればよいですか? または、バージョン エラーなしでサブモジュールの 1 つを実行するにはどうすればよいですか?

4

2 に答える 2

2

子 pom のデフォルトのレイアウトは次のようになります。

<project ..>  

  <parent>
    <groupId>the.company.project</groupId>
    <artifactId>SP1_Child1</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>

  <groupId>the.company.project</groupId>
  <artifactId>SP1_Child1</artifactId>
  ...

</project>

ただし、プロパティを使用せずに、親要素だけで個別にバージョンを定義しないでください。バージョンは、親から子モジュールに自動的に継承されます。同じグループがある場合は、子でグループを定義する必要もありません。次のように使用できます。

<project ..>  

  <parent>
    <groupId>the.company.project</groupId>
    <artifactId>SP1_Child1</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>

  <artifactId>SP1_Child1</artifactId>

  ...

</project>
于 2013-09-26T08:40:47.720 に答える
1

親から SP1_Child1 バージョンを取得すると、SP1_Child1 プロジェクトの新しいバージョンに対して親の新しいバージョンをインストールする必要があるため、非常に面倒です。

2 つの異なる状況が考えられます。

  • ライフサイクルが異なるさまざまなプロジェクトを管理できるようにしたいと考えています。次に、SP1_Child1 プロジェクトでバージョンを指定し、親 POM の他のプロジェクトで使用される SP1_Child1 のバージョンを指定します (この場合、2 つの値は異なる場合があります)。

  • アプリケーションは、利便性のためにさまざまなモジュールに編成されている場合でも、モノリシックです。この場合、khmarbaise のアドバイスに従い、すべてのプロジェクトに対して 1 つのバージョンを保持し、親からバージョンを継承するのが最善です。

于 2013-09-26T09:08:19.500 に答える