如何使用源代码和JavaDoc部署SNAPSHOT?


92

我想用快照部署源和javadocs。这意味着我要自动执行以下命令:

mvn clean source:jar javadoc:jar deploy

只需执行:

mvn clean deploy

我不想在此install阶段(即本地版本)执行javadoc / sources生成。

我知道Source / javadoc插件可以与release插件的执行同步,但是我不知道如何将其连接到快照版本。

Answers:


76
<build>
  <plugins> 
    <plugin>
      <artifactId>maven-source-plugin</artifactId>
      <executions>
        <execution>
          <id>attach-sources</id>
          <phase>deploy</phase>
          <goals><goal>jar-no-fork</goal></goals> 
        </execution>
      </executions>
    </plugin>
    <plugin> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <executions> 
        <execution> 
          <id>attach-javadocs</id>
          <phase>deploy</phase>
          <goals><goal>jar</goal></goals> 
        </execution> 
      </executions> 
    </plugin>
    <plugin> 
      <!-- explicitly define maven-deploy-plugin after other to force exec order -->
      <artifactId>maven-deploy-plugin</artifactId> 
      <executions> 
        <execution> 
          <id>deploy</id>
          <phase>deploy</phase>
          <goals><goal>deploy</goal></goals> 
        </execution> 
      </executions> 
    </plugin>
  </plugins> 
</build>

有关完整示例,请参见Sonatype的OSS父POM


1
我正在使用此设置,并且效果很好。但是,我有两个小问题:第一,生成的源不包括在“ jar”目标中,您将需要“ jar-no-fork”。第二,版本插件中存在一个错误,该错误将导致两次生成发布源(因此被部署两次,这将导致存储库管理器出现问题)
mglauche 2011年

1
maven-source-plugin:jarpackage默认情况下会附加到该阶段,因此您可以离开<phase>verify</phase>并完成相同的操作。此外,我不确定您为什么还要附加此代码以进行验证,因为该阶段旨在“打包项目并运行集成测试”。
马特b

@mglauche @matt感谢您的评论。我刚刚做了适当的更改。
sfussenegger 2011年

1
@Henryk好吧,我已经明确添加了maven-deploy-plugin以及maven似乎(或尝试)来确保在插件中定义的POM中执行。不过,可能需要进行一些实验。
sfussenegger,2011年

1
使用随机ID会创建新的执行,我认为您想“重新映射”默认的一个执行
Hurda 2013年


45

Dan提到的文章还提到了另一种方法,该方法无需修改pom就可以使用,并且不会很快消失:

mvn clean javadoc:jar来源:jar安装

可以与Maven 3+以及...一起使用

mvn clean javadoc:jar来源:jar部署

我已经从Jenkins部署到Nexus的系统进行了测试。

这种方法很好,因为我只需要修改一些詹金斯的工作,而无需弄乱我的pom。


5
感谢您的无Pom解决方案!请注意,javadoc:jar和/或source:jar必须在安装之前出现,或者部署,否则多余的jar将不会“附加”到部署中。
seanf '16

2
FWIW这些选项还适用于packagemvn clean javadoc:jar source:jar package
ecoe

这是一个很好的答案,因为它告诉您确切的命令来构建源和javadoc并将其上传到您的仓库。
russellhoff
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.