2011-10-21 16 views
0

私はMavenマルチモジュールプロジェクトを持っています。あるモジュールでは、maven-assembly-pluginプラグインを使用してZIPを作成します。このためMavenアセンブリZIPにあまりに多くの依存関係を含める

<baseDirectory>/</baseDirectory> 
    <formats> 
    <format>zip</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
    <dependencySet> 
     <outputDirectory>/</outputDirectory>  
     <useProjectArtifact>true</useProjectArtifact>   
     <excludes> 
      <exclude> 
       com.sample.blabla:test-core-client 
      </exclude> 
     </excludes> 
     <scope>runtime</scope> 
    </dependencySet> 
    </dependencySets> 

そして、ポンポンの設定:このための設定37 Xの達人:

<execution> 
    <id>make-service-client-with-dependencies-zip</id> 
    <phase>package</phase> 
    <goals> 
     <goal>single</goal> 
    </goals> 
    <configuration> 
     <finalName>${service-client-with-dependencies.zip.filename}</finalName> 
      <appendAssemblyId>true</appendAssemblyId> 
     <outputDirectory>${project.build.directory}/zip</outputDirectory> 
     <descriptors> 
      <descriptor>src/main/assembly/test-service-client-with-dependencies.xml</descriptor> 
     </descriptors> 
    </configuration> 
</execution> 

は、残念ながら作成したZIPたちは...たとえばたいと、ずっと瓶-Sが含まれています-XXX JAR、多くの春の瓶、ワゴンの瓶、...など。

ただし、実行時に必要なこれらのjarファイルは含まれません。どうすればいいの?

答えて

2

Mavenアセンブリプラグインにはのみが含まれていますあなたの設定に応じてruntimeスコープにあるジャー。 mvn dependency:treeを実行し、出力をジップの内容と比較することができます。

useTransitiveDependenciesfalseに設定してみてください。これにより、すべての推移的な依存関係がzipから除外されます。しかし、これは不愉快な副作用を持つことがあります。

+0

ありがとうございました! false は私の問題を解決しました。 –

0

結果にキッチンシンクとすべてが含まれているディスクリプタtest-service-client-with-dependencies.xmlを使用します。

代わりにjar-with-dependenciesを使用してください。これには、エントリのランタイム依存性(ローカルおよび一時的)が含まれます。

それはまだ多すぎると(他の誰かが後でクラスパスに追加する場合)、その後、あなたが<scope>provided</scope>としてそれらを宣言することで、依存関係を省略することができ、<scope>test</scope>(依存性がテストを実行することだけが必要である場合)または<optional>true</optional>場合これはオプションの依存関係です。

関連する問題