は、しかし、潜在的に最も簡単な方法は、独自のライフサイクルを持つ独自のMavenプロジェクトにMYLIBを分離することです。このアプローチの利点は、複数のバージョンのmylibとアプリケーションAとBが必要に応じて異なるバージョンのmylibを参照できるようサポートできることです。 EclipseでmylibとappAが開いている場合(そしてmylibが開いているmylibのバージョンを参照している場合)、Mavenを使用する前と同じ方法でアプリケーションを構築できます。
次のような何かを行くことができるように、このアプローチは、アプリケーションのディレクトリ構造間の依存関係を強制しない:
/myapps/MYLIB
/myapps/APPA
/myapps/APPB
このアプローチの欠点は、それらが別々のアプリケーションとして扱われるようにMavenを自動的APPAとMYLIB(又はAPPBとMYLIB)の両方を構築しないであろうということです。しかし、アプリケーションがmylibの事前定義されビルドされたバージョン( "mvn install"を使用してローカルのMavenリポジトリにアップロードされている)を使用している場合、これは大きな問題ではないかもしれません。ここで
は、これらのプロジェクトのためのPOMの例である:
MYLIB:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>myLib</artifactId>
<versioning>0.0.1</versioning>
<packaging>jar</packaging>
<name>mylib</name>
...
</project>
APPA:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>appA</artifactId>
<packaging>jar</packaging>
<name>appA</name>
...
<dependencies>
<groupId>com.text</groupId>
<artifactId>mylib</artifactId</artifactId>
<version>0.0.1</version>
</dependencies>
...
</project>
APPB:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>appB</artifactId>
<packaging>jar</packaging>
<name>appB</name>
...
<dependencies>
<groupId>com.text</groupId>
<artifactId>mylib</artifactId</artifactId>
<version>0.0.1</version>
</dependencies>
...
</project>
あなたはまだしたい場合親の利便性POM(1つのMVNのパッケージコメント)は、その後、次のような/ myappsフォルダ内のマスターPOMを作成することができます。
<project>
<groupId>com.test</groupId>
<version>0.0.1</version>
<artifactId>myapps</artifactId>
<packaging>pom</packaging>
<name>myapps</name>
<modules>
<module>shared</modules>
<module>appA</modules>
<module>appB</modules>
</modules>
</project>
このPOMは自動的にmyappに、APPAとAPPBを構築します。必要に応じて、appAおよびappB固有のPOM(pom-appA.xml)を作成することもできます。これは、Mavenの観点からは最もクリーンなアプローチではありませんが、機能します。あなたが実行する唯一の問題は、mylibのバージョンがappAまたはappBが依存するバージョンでない場合です。その場合、あなたのappAまたはappBコードはあなたのMavenリポジトリ内のバージョンに対してコンパイルされます(そのバージョンが存在する場合)。
他にもたくさんのオプションがありますが、さまざまなシナリオではどのブログが最も優れているかについて、ブログやWikiに関する議論がたくさんあります。しかし、通常、それはあなたとあなたの組織に最適なものにまで下がります。それが動作していて、カスタムでポータブルではない移植ソリューションを構築していない限り、おそらく大丈夫です。
うまくいけば、これを使うことができます。
ありがとう、これは役立ちます。私は手動でEclipseの.classpathファイルを編集してmylib(以前のように)を組み込み、Eclipseで期待どおりに動作します。 –