2016-03-24 66 views
4

Sonatype具有我想部署jar文件的存儲庫,並且它們要求爲應用程序,源和單獨的文件Javadoc中:如何爲應用程序,源代碼和文檔生成單獨的jar文件(適用於central.sonatype.org)

實施例:

example-application-1.4.7.pom 
example-application-1.4.7.jar 
example-application-1.4.7-sources.jar 
example-application-1.4.7-javadoc.jar 

在Scala中SBT,我的命令被稱爲「包」,其產生用於所述項目的jar文件,但只生成「示例應用-1.4.7.jar 」。

問題:我該怎麼做才能生成其他兩個jar文件?

+0

在maven中,您將使用'javadoc'和'sources'插件。 –

+0

對不起,我對maven不熟悉。 –

+0

您帶有多標籤的Maven和SBT。您需要提供有關您的構建的詳細信息,以便我們推薦適當的更改。 – chrylis

回答

3

在Maven中,爲了獲得額外的-sources-javadoc文物,添加到您的POM文件如下:

<build> 
    <plugins> 
     <!-- additional plugin configurations, if any.. --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-source-plugin</artifactId> 
      <version>3.0.0</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.10.3</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

注意片段上方:

執行

mvn clean package 

你會發現在target文件夾這兩個附加的罐子。


.pom文件,而不是被在install相生成,但它是不target文件夾之下。基本上,它是您的pom.xml文件的副本,具有不同的擴展名,在依賴關係調解過程中由Maven使用,以檢查相關工件需要哪些傳遞依賴關係。

執行

mvn clean install 

Maven將安裝神器在你的本地緩存(在你的機器),path_to_cache/.m2/repository/your_groupId/your_artifactId/your_version/下。在這個文件夾中,你還會發現.pom文件,通常你不需要分發(它是由Maven自動創建的)。


進一步注意:您可能不希望產生在每一個構建這些額外的jar文件,所以要加快建立正常的,讓他們只需求,你可以在一個Maven profile包裹上面的代碼段。

您可以從您的build部分刪除上述片斷實現這一點,並在你的pom的末尾添加另一個部分:

<profiles> 
    <profile> 
     <id>prepare-distribution</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-source-plugin</artifactId> 
        <version>3.0.0</version> 
        <executions> 
         <execution> 
          <goals> 
           <goal>jar</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-javadoc-plugin</artifactId> 
        <version>2.10.3</version> 
        <executions> 
         <execution> 
          <goals> 
           <goal>jar</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

使正常的構建不會再創建這些廣口瓶,但在執行時如下:

mvn clean install -Pprepare-distribution 

你會讓他們回來。 -P選項實際上是根據需要激活使用ID爲prepare-distribution定義的配置文件。


與Maven 3默認的配置文件已經自帶作爲執行完全相同的動作(來源和javadoc神器)的super pom的一部分,因此無需任何添加到現有的項目。只需運行:

mvn clean install -Prelease-profile 

或者,通過屬性來激活它

mvn clean install -DperformRelease=true 

然而,正如在超級POM還規定,此配置文件可能會在未來的版本中被刪除(雖然因爲第一個Maven 版本,直到版本3.3.9至今)

注:釋放曲線將從未來的版本中刪除超級POM

此警告背後的主要原因是最有可能推動該Maven Release Plugin的使用,從而間接利用此配置文件的通過的release:perform目標useReleaseProfile選項。


所強調的意見,如果你不熟悉Maven的(特別是通過控制檯)我肯定會通過官方Maven in 5 minutes文檔快速,但值得看看推薦給

  • 圍棋。
  • 從命令行與Maven一起玩,Maven在哪裏給你最好的。 IDE集成很棒,但命令行是真正的轉折點。
  • 然後玩上面的POM自定義,熟悉一些概念和行爲,首先直接作爲默認構建的一部分,然後移動到配置文件。
  • 然後,只有這樣,才能使用Maven Release Plugin。我把它推薦爲最後一步,因爲你已經獲得了更多的信心和理解,並且認爲它不那麼神奇和更合理。
+1

中的指令發佈他的jar文件,maven-release-plugin所有這一切默認。我認爲OP想要_release_,而不是嚴格的_deploy_(用Maven的話來說)。 – Tunaki

+0

嗯...... OP希望將他的Scala SBT庫放在一個人們可以將其添加到項目中的地方,而不必指定一些非默認回購主機/位置。由於OP依靠IntelliJ,OP尚不熟悉命令行工具Maven。 –

相關問題