2

私は互いに強く関連する一連のプロジェクトに取り組んでおり、適切なMaven構成を使用してメンテナンスのオーバーヘッドを最小限に抑える方法を探しています。

私が現在取り組んでいるシナリオの1つは、同じ「会社プロジェクト」内のいくつかの小さなプロジェクトのセットです。それらのほとんどは他のプロジェクトに依存しており、それぞれに外部依存関係の大きなリストがあります。

わかりやすくするために、親pomを作成し、それらすべてをモジュールとして設定し、親のdependencyManagementセクション内に依存関係の大きなリストを作成して、プロジェクトpom内のほとんどのバージョンタグを削除できるようにしました。

私にとっての次の段階は、1つのjarやアセンブリなどのプラグインを使用して、結果として生じるjarの量を減らし、他のすべてを含むプロジェクトの1つからsignlejarを取得することです。しかし、これにより、大量の外部ライブラリが内部にある巨大なjarファイルが作成され、それらのほとんどはすでに実行環境によって提供されています。外部依存関係の宣言にタグを追加することでうまくいくことは知ってい<scope>provided</scope>ますが、pomsにこれらのタグが数十個含まれることは避けたいと思います。

したがって、質問は次のとおりです。

  • デフォルトのスコープを定義する方法はありますcompileか?スコープは、含めたいライブラリでのみ使用できますか?

次に、これを持っている代わりに:

<dependencyManagement>
    <dependency>
        <groupId>any.external</groupId>
        <artifactId>lib</artifactId>
        <version>1.0</version>
        <scope>provided</scope> <!--Skip Inclusion-->
    </dependency>
    <dependency>
        <groupId>any.external</groupId>
        <artifactId>cool-lib</artifactId>
        <version>1.0</version>
        <scope>provided</scope> <!--Skip Inclusion-->
    </dependency>
    <dependency>
        <groupId>another.external</groupId>
        <artifactId>lib</artifactId>
        <version>1.0</version>
        <scope>provided</scope> <!--Skip Inclusion-->
    </dependency>
    <dependency>
        <groupId>my.company</groupId>
        <artifactId>some-dependency</artifactId>
        <version>1.0</version>
    </dependency>
</dependencyManagement>

私はこれを持つことができます(含めるべき内部プロジェクトが10個だけで、外部ライブラリが100個を超える場合に違いが生じることに注意してください):

<dependencyManagement>
    <dependency>
        <groupId>any.external</groupId>
        <artifactId>lib</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>any.external</groupId>
        <artifactId>cool-lib</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>another.external</groupId>
        <artifactId>lib</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>my.company</groupId>
        <artifactId>some-dependency</artifactId>
        <version>1.0</version>
        <scope>compile</scope><!-- Include It! -->
    </dependency>
</dependencyManagement>
  • またはより良い:多分私は何かをスキップしていて、Mavenに「現在のプロジェクト内で生成されたjarのみを含める」と伝える方法がすでにありますか?すべてのモジュールは「兄弟」であり、同じ親のモジュールとして含まれ、同時にコンパイルされることに注意してください。

よろしくお願いします!カルレス

4

0 に答える 0