2017-05-03 68 views
1

我有一個Maven項目(父項目的子模塊),我需要創建一個「與依賴關係」的jar。我將maven-assembly-plugin添加到pom.xml中,但它沒有創建工件。我已經慢慢剝離了pom.xml中的所有內容,直到剩下的所有內容都是依賴項和此插件,並且它仍然不會創建具有依賴項的jar。看着mvn clean package的輸出,它運行clean,compilejar,但從未運行assembly插件。我不知道爲什麼。這是pom.xml,任何人都可以發現問題嗎?Maven程序集插件jar與依賴關係 - 插件沒有運行

<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>project</groupId> 
    <artifactId>project-name</artifactId> 
    <version>1.0</version> 
    <name>project-name</name> 

    <properties> 
     <build.time>${maven.build.timestamp}</build.time> 
     <spring.framework.version>4.3.1.RELEASE</spring.framework.version> 
     <spring.security.version>4.1.1.RELEASE</spring.security.version> 
     <spring.webflow.version>2.4.2.RELEASE</spring.webflow.version> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 

    <build> 
     <sourceDirectory>${project.basedir}/src/java</sourceDirectory> 
     <resources> 
      <resource> 
       <directory>${project.basedir}/src/resources</directory> 
      </resource> 
     </resources> 
     <outputDirectory>${project.basedir}/target/classes</outputDirectory> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>3.0.0</version> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
       </configuration> 
      </plugin> 

     </plugins> 
    </build> 

    <dependencies> 
     [snip] 
    </dependencies> 
</project> 
+3

您需要將其附加到生命週期階段。 –

+0

這似乎是工作。謝謝! – user1071914

回答

1

Maven reference

從裝配 描述符集合的應用程序包或分佈。此目標適用於綁定到生命週期 或直接從命令行調用(前提是所有必需的文件 在構建開始之前都可用,或者由在命令行上指定的另一個目標 之前生成)。

asssembly:single目標可以以兩種方式使用:

  • 或者通過將它綁定到生命週期

  • 或通過直接從命令行調用它

你沒有一個人。

比如,你可以這樣做是爲了插件執行綁定到package階段:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>3.0.0</version> 
    <configuration> 
     <phase>package</phase> <!-- bind to the packaging phase --> 
     <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
    </configuration> 
</plugin> 

現在mvn packagemvn install命令將創建具有相關的罐子。

您還可以保留實際的插件配置並運行mvn assembly:single命令。

第二種方式允許創建具有需求依賴關係的jar而不是每個構建。
如果jar創建是一項長期任務,而不需要在每個構建中執行,那麼這可能是可取的。

+0

奇怪的是,這些簡單的信息並未在Maven插件文檔中明確顯示,但必須通過閱讀兩個單獨的章節並將它們放在一起來推斷。呃,好吧。免費。 – user1071914