0

pom.xml を含むディレクトリと、独自の pom.xml ファイルを含むいくつかのサブディレクトリがあります。

1 つのサブディレクトリは、サードパーティと呼ばれるローカルです。これにはいくつかの jar ファイルが含まれており、実行時にローカルの Maven リポジトリにインストールmvn installされます。これらはmvn compile、他のアーティファクトのフェーズで必要になります。ルート pom.xml は、各子 pom.xml で同じステップを実行するだけです。

mvn compile が他のフォルダーを実行する前にサードパーティのフォルダーにインストールを行うように、ルート pom.xml を変更したいと思います。私はmaven-compiler-pluginでこれを試しました:

<executions>
    <execution>
        <id>thirdparty</id>
        <phase>install</phase>
    </execution>
</executions>

依存関係要素でフェーズを指定することについて、ドキュメントには何もありません。

4

3 に答える 3

1

私がこれをまっすぐにしていることを確認するために、アグリゲーター pom、AGG、およびいくつかのサブモジュール A と B があるように思えます。ここで、A は、B がコンパイルされる前にローカルリポジトリにインストールする必要があるサードパーティの jar に他なりません. それが本当なら、次の 2 つの可能性が思い浮かびます。

1) A を廃止し、代わりにサードパーティの jar を適切なスタンドアロン リポジトリ (ローカルの Nexus サーバーなど) にインストールし、そのリポジトリを pom に追加します。それはそれを行う「Maven」の方法です。

2) A への依存関係を B に追加し<dependencies>ます。A で、インストールが必要な jar ごとの実行でインストール プラグインcompileを構成し、これらの実行をフェーズにバインドします。次に、compileAGG で実行すると、最初compileに A で実行され、すべての jar がインストールされ、次に B で実行されます。これによりcompile、B の依存関係となる A.jar が生成されるという副作用があることに注意してください。 maven は、すべてのモジュールが何らかのタイプのアーティファクトを 1 つだけ生成すると想定しています。A.jar を実際にビルドできるように、少なくとも 1 つのクラスまたはリソースを追加する必要がある場合があります。それについてはわかりません。別の方法として、A のパッケージングを「pom」に設定して実験することもできます。

于 2013-05-20T03:27:27.380 に答える
0

I believe you are using Maven in a wrong way.

Such kind of 3rd party dependencies should be put to local repository (or your internal Maven repository) before you run the compilation work, and dependencies in your project should be setup accordingly. "Installation of 3rd party artifacts" shouldn't be part of the build process.

And, in Maven world, we rarely have 3rd party libs exists as part of the source code. In fact one of the reason for using Maven is to get rid of such kind of libs in source code.

于 2013-05-20T03:24:01.510 に答える
-1

いくつかの依存関係が必要なようです。依存要素を調べます。

于 2013-05-20T02:55:06.560 に答える