1. ホーム
  2. maven-3

[解決済み] あるプロジェクトを他のプロジェクトの依存関係として追加するにはどうしたらいいですか?

2023-06-23 02:29:13

質問

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

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

私はこれがant buildで達成できることを知っていますが、mavenで処理する方法があるのでしょうか?

私たちは "pom" で親プロジェクトを作成し、他の 2 つを親プロジェクトの下に移動させることができます。しかし、残念ながら、現在、私たちはすでに CVS でそれらの 2 つを別々のプロジェクトとして持っており、私は構造を変更することができないので、これを行うことはできません。もし私がpomファイルを通してこれを扱うことができるなら、これは私が探しているものです。

どのように解決するのですか?

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 プロジェクトにしてビルドするか、すでに行っているような方法でインストールするのが、通常はより良い (好ましい) 方法です。


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

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

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

<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>