85

2つの独立したプロジェクト(myWarProjectMyEjbProject)があります。したがって、ビルドするときに、をローカルリポジトリmyWarProjectにインストールする必要がありMyEjbProjectます。これにより、myWarProjectで依存関係として定義し、myWarProjectを正常にパッケージ化できます。

個別にインストールせずにMyEjbProject、また親モジュールとして定義せずにこれを処理する方法はありますか?

これはAntビルドによって実現できることは知っていますが、Mavenを介して処理する方法があるかどうか疑問に思いますか?

「pom」を使用して親プロジェクトを作成し、他の2つを親プロジェクトの下に移動できます。ただし、残念ながら、これを行うことはできません。現在、CVSにはこれら2つのプロジェクトが別々のプロジェクトとしてあり、構造を変更することはできません。私がpomファイルを介してこれを処理できる場合、これはImが探しているものです。

4

1 に答える 1

79

MyEjbProjectが所有している別のMavenプロジェクトではない、またはmavenでビルドしたい場合は、システムの依存関係を使用して、プロジェクトの既存のjarファイルにリンクできます。

<project>
   ...
   <dependencies>
      <dependency>
         <groupId>yourgroup</groupId>
         <artifactId>myejbproject</artifactId>
         <version>2.0</version>
         <scope>system</scope>
         <systemPath>path/to/myejbproject.jar</systemPath>
      </dependency>
   </dependencies>
   ...
</project>

とは言うものの、通常、パッケージをMavenプロジェクトにしてビルドするか、すでに行っているようにインストールすることで、パッケージをリポジトリにインストールする方が良い(そして好ましい方法です)。


ただし、それらが相互に依存している場合は、他の2つのプロジェクトを「モジュール」として宣言する別個の親プロジェクト(「pom」プロジェクトである必要があります)をいつでも作成できます。(子プロジェクトは、3番目のプロジェクトを親として宣言する必要はありません)。結果として、新しい親プロジェクト用の新しいディレクトリが作成されます。ここには、おそらく次のような2つの独立したプロジェクトも配置されます。

parent
|- pom.xml
|- MyEJBProject
|   `- pom.xml
`- MyWarProject
    `- pom.xml

親プロジェクトは、すべての子モジュールに名前を付けるための「モジュール」セクションを取得します。次に、アグリゲーターは子モジュールの依存関係を使用して、プロジェクトがビルドされる順序を実際に見つけます)

<project>
   ...
   <artifactId>myparentproject</artifactId>
   <groupId>...</groupId>
   <version>...</version>

   <packaging>pom</packaging>
   ...
   <modules>
     <module>MyEJBModule</module>
     <module>MyWarModule</module>
   </modules>
   ...
</project>

そうすれば、プロジェクトは相互に関連付けることができますが、(ローカルリポジトリにインストールされた後は)他のプロジェクトのアーティファクトとして独立して使用されます。


最後に、プロジェクトが関連するディレクトリにない場合は、それらを相対モジュールとして提供しようとする可能性があります。

filesystem
 |- mywarproject
 |   `pom.xml
 |- myejbproject
 |   `pom.xml
 `- parent
     `pom.xml

今、あなたはこれを行うことができます(Maven 2で動作し、試してみました):

<!--parent-->
<project>
  <modules>
    <module>../mywarproject</module>
    <module>../myejbproject</module>
  </modules>
</project>
于 2013-03-13T11:08:32.637 に答える