0

我試圖找出如何我可以將所有依賴關係複製到明確版本和所有必需的依賴關係。Maven的副本依賴包括組和所有傳遞元素

例如:我的項目需要第三方庫的版本3,稱爲foobar。 我想將版本3庫複製到名爲lib-foobar - $ {foobar.version}的文件夾中。 在這個文件夾中是那些需要在版本3中使用foobar的罐子。這意味着罐子本身以及在foobar pom中聲明的所有相關罐子。

我目前在階段包中使用org.codehaus.mojo:maven-dependency-plugin:2.1和目標拷貝依賴關係。 我的配置是

<configuration> 
    <outputDirectory>${project.build.directory}/lib-foobar-${foobar.version}</outputDirectory> 
    <includeGroupIds>com.foobar</includeGroupIds> 
    <excludeTransitive>false</excludeTransitive> 
    <excludeScope>test</excludeScope> 
    <includeScope>compile</includeScope> 
</configuration> 

我不想因爲新版本的一步每月發生列出所有允許和不允許LIB的。

有沒有其他工具可以做到這一點,或者有什麼閃避嗎? 感謝您的回覆!

+2

你可以試試[maven-assembly-plugin](http://maven.apache.org/plugins/maven-assembly-plugin/)。 – user944849

回答

3

非常感謝user944849。

這對我找出最佳解決方案非常有幫助。

大家誰是有興趣在我的解決方案,就到這裏吧:

起初,我改變了插件Maven的assemby-插件,並增加了新的裝配文件

 <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.4</version> 
     <dependencies> 
      <dependency> 
      <groupId>com.foobar</groupId> 
      <artifactId>foobar-parent</artifactId> 
      <version>${foobar.version}</version> 
      <type>pom</type> 
      </dependency> 
     </dependencies> 
     <executions> 
      <execution> 
      <id>copy-foobar</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      <configuration> 
       <descriptors> 
        <descriptor>src/assemble/foobar-libs.xml</descriptor> 
       </descriptors> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 

和大會文件看起來像:

<assembly 
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> 
    <id>standalone</id> 
    <formats> 
    <format>dir</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
    <dependencySet> 
     <includes> 
     <include>org.foobar</include> 
     </includes> 
     <outputDirectory>/lib-foobar-${foobar.version}</outputDirectory> 
     <useProjectArtifact>true</useProjectArtifact> 
     <useTransitiveFiltering>true</useTransitiveFiltering> 
     <unpack>false</unpack> 
    </dependencySet> 
    </dependencySets> 

</assembly> 

的關鍵是<useTransitiveFiltering>元素,從而解決了基於所包括的所有庫傳遞庫。