2012-06-27 65 views
4

我想創建一個Maven程序集,其中包含工件的傳遞依賴關係,而實際上不包括工件本身。我試圖從程序集中排除工件,但其結果並不包含其依賴關係。在不包含實際工件的情況下包含Maven程序集中的依賴關係

ArtifactA有DependencyA,DependencyB

大會應包含DependencyA,DependencyB(不ArtifactA)

而且我preferrably想做到這一點,而無需顯式指定哪些依賴被列入大會,因爲這將用多個依賴項目來完成。

謝謝!

+0

您可以更改裝配的目標罐子建造之前? –

+0

這感覺有點圓/反直覺。如果ArtifactA的發佈消除了對A的依賴,該怎麼辦?你的項目會中斷嗎?如果你依賴於A和B,爲什麼不直接把它們放入你的POM? – jeff

+0

對不起,沒有提供更多的上下文。我正在遷移我們的Web應用程序以使用JBoss AS 7,它現在​​有一個模塊的概念,用於將jar文件和其他文件放置在類路徑中。我正在嘗試創建一個Maven項目,該項目將構建JBoss模塊以包含我們的API jar的依賴項,以便在每次使用它的戰爭中都不會包含它的所有依賴項。 –

回答

1

我終於搞定了。這將產生一個只包含depende的依賴性神器

的pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>moduletest</groupId> 
    <artifactId>moduletest</artifactId> 
    <version>1.0</version> 
    <packaging>pom</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>dependency</groupId> 
      <artifactId>dependency</artifactId> 
      <version>1.0</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.3</version> 
       <configuration> 
        <descriptors> 
         <descriptor>assembly.xml</descriptor> 
        </descriptors> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

assembly.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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>module</id> 

    <includeBaseDirectory>false</includeBaseDirectory> 

    <formats> 
     <format>zip</format> 
    </formats> 

    <dependencySets> 
     <dependencySet> 
      <excludes> 
       <exclude>dependency:dependency</exclude> 
      </excludes> 
      <useProjectArtifact>false</useProjectArtifact> 
      <useTransitiveDependencies>true</useTransitiveDependencies> 
     </dependencySet> 
    </dependencySets> 

</assembly> 
+0

不錯,但是這會得到項目中所有工件的傳遞依賴關係,而不僅僅是依賴關係:依賴關係 –

相關問題