2017-08-10 6 views
0

私はプロジェクトのためにlibの下、以下のプロジェクト構造を持つ2推移依存性どのように除外しますか。 - Mavenの

プロジェクト2(lib下)

- Maven dependencies (JARs) 
- project 1 JAR (it has JARs in lib) 
    - Maven dependencies of project 1 (JARs) 

私はプロジェクト2.

を準備しながら、プロジェクト1の下のすべてのJARを除外したいです

私は現在、私のPOMに下記の使用しています(プロジェクト1およびプロジェクトの両方2)

<plugins> 
    <plugin> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-maven-plugin</artifactId> 
    </plugin> 
</plugins> 

プロジェクト1をビルドするときに、libを使って実行可能なJARとしてビルドします。

しかし、プロジェクト2をビルドするときには、プロジェクト1をコンパイル済みJAR(クラスファイルのみで、lib(JAR)を持たない)として欲しいです。

プロジェクト1はプロジェクト2に通常の依存関係として含まれています。誰か助けてくれますか?

答えて

0

私が正しく理解していれば、プロジェクト1は、依存関係を持つlibディレクトリ内にあるjarをビルドします。

2つのアセンブリ実行、1つは基本的なjar、もう1つは依存関係があり、マニフェストを実行することができます。通常、同じプロジェクトの複数の成果物に対して異なる「分類子」を使用します。

そうしないと、Shadeのようなプラグインを使用したくないライブラリを削除するためにjarファイルを "再パッケージ"する必要があります。

私は最初のオプションがはるかに優れていると思います。リポジトリに公開すると、他の人がどちらか一方を取得できるように両方のjarファイルが公開されます。

+0

私はJARを1つしか作成せず、2つしか作成しません。レポが1つのファイルだけを保持したいと思う。 シェードプラグインの例を教えてもらえますか?私が使用できるものは何ですか? –

0

あなたは、特定の依存関係のすべての依存関係を除外する除外

https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

を使用し、もちろん

<dependency> 
    <groupId>sample.ProjectA</groupId> 
    <artifactId>Project-A</artifactId> 
    <version>1.0</version> 
    <scope>compile</scope> 
    <exclusions> 
    <exclusion> 
     <groupId>*</groupId> 
     <artifactId>*</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 

ようにそれをしたい場合は、必ず行方不明推移ということでなければなりません実行時に依存関係は必要ありません。

+0

私が除外オプションを使用しても、私は実行可能なjar bczのspring-boot-maven-pluginの機能を持つことになりますか? –

関連する問題