2017-06-22 44 views
1

我生氣與mvn配置。 mvn clean deploy只生成主jar文件。不是javadoc,資源和標誌等文件。如果我明確地調用mvn clean jar:jar javadoc:jar source:jar gpg:sign deploy - 它會生成javadoc和源代碼等,但主jar是空的。mvn不生產所有artifcats

發生了什麼! ?

<build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-source-plugin</artifactId> 
        <version>2.2.1</version> 
        <executions> 
         <execution> 
          <id>attach-sources</id> 
          <phase>deploy</phase> 
          <goals> 
           <goal>jar-no-fork</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-javadoc-plugin</artifactId> 
        <version>2.9.1</version> 
        <executions> 
         <execution> 
          <id>attach-javadocs</id> 
          <phase>deploy</phase> 
          <goals> 
           <goal>jar</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-gpg-plugin</artifactId> 
        <version>1.5</version> 
        <executions> 
         <execution> 
          <id>sign-artifacts</id> 
          <phase>verify</phase> 
          <goals> 
           <goal>sign</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>2.3.2</version> 
        <configuration> 
         <source>1.8</source> 
         <target>1.8</target> 
        </configuration> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-resources-plugin</artifactId> 
        <version>2.7</version> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.20</version> 
        <configuration> 
         <suiteXmlFiles> 
          <suiteXmlFile>suite.xml</suiteXmlFile> 
         </suiteXmlFiles> 
         <properties> 
          <property> 
           <name>suitethreadpoolsize</name> 
           <value>1</value> 
          </property> 
         </properties> 
        </configuration> 
       </plugin>   
      </plugins> 
    </build> 
+0

您不需要爲maven-jar-plugin添加階段。只定義插件的版本。所有排除等不是必需的,因爲這是默認的... – khmarbaise

+0

@khmarbaise感謝您的意見。我更新了POM。我仍然沒有看到javadoc和源文件 – KitKarson

+1

將javadoc,源插件的階段更改爲'package'而不是deploy,然後嘗試'mvn clean package' – khmarbaise

回答

1

將插件移動到<pluginManagement>部分之外。本部分用於管理您的插件或更確切地說,處理它們的版本。

激活發生此部分之外:

<build> 
    <pluginManagement> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-source-plugin</artifactId> 
     <version>2.2.1</version> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-javadoc-plugin</artifactId> 
     <version>2.9.1</version> 
     </plugin> 
    </plugins> 
    </pluginManagement> 
    <plugins> 
     <!-- Activation occurs here. If you have declared the version of the 
      plugin in the section above, then you can omit the version in 
      this section. 
     --> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-source-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>attach-sources</id> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-javadoc-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>attach-javadocs</id> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins>  
</build> 

mvn package現在應該生成你想要的神器,如果你部署,他們將被自動拾取。

+0

謝謝@Daniel。根據你的建議,我用新的POM更新了問題。我刪除了'pluginmanagement'。仍然沒有運氣。 javadoc和源不會生成! – KitKarson

+0

我已經更新了代碼片段,使其更符合最佳實踐,這意味着這些工件應該在'package'階段生成。我通過刪除執行的綁定階段來完成此操作,該階段默認爲'package'。 – Daniel

+0

感謝Daniel的輸入 – KitKarson