如何使用源和JavaDoc部署SNAPSHOT?

Hen*_*sek 90 java maven-2 maven-release-plugin

我想用我的快照部署源代码和javadoc.这意味着我想自动化以下命令:

mvn clean source:jar javadoc:jar deploy
Run Code Online (Sandbox Code Playgroud)

只是为了执行:

mvn clean deploy
Run Code Online (Sandbox Code Playgroud)

我不希望在install阶段(即本地构建)中执行javadoc/sources生成.

我知道source/javadoc插件可以与release插件的执行同步,但我无法弄清楚如何将它连接到快照发布.

sfu*_*ger 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>
Run Code Online (Sandbox Code Playgroud)

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

  • 这对我的 Maven 3.1.1 不起作用。部署插件发生在 javadoc 和 source 之前,不管它们在 pom.xml 中出现的顺序如何。还有其他人遇到这个吗? (3认同)
  • 我正在使用这个设置,而且效果很好。但是我有两个小问题:一,生成的源不包含在“jar”目标中,您需要“jar-no-fork”。第二,发布插件中存在一个错误,会导致两次生成发布源(因此部署两次,这将导致存储库管理器出现问题) (2认同)

Dan*_*Dan 46

只是添加一个不需要你使用插件配置的替代方案:

mvn -DperformRelease=true [goals]
Run Code Online (Sandbox Code Playgroud)

来自http://sea36.blogspot.com/2009/02/attaching-javadocs-and-sources-to-maven.html?showComment=1314177874102#c6853460758692768998的信用转到mcbeelen

  • 我想提一下,这个功能可能会在未来的Maven版本中消失(可能是Maven-4?).在Maven Super POM的个人资料部分查看评论:http://maven.apache.org/ref/3.1.1/maven-model-builder/super-pom.html (4认同)

HDa*_*ave 40

Dan提到的文章还提到了另一种方法,它可以在不修改poms的情况下工作,并且不会很快消失:

mvn clean javadoc:jar源码:jar安装

哪个适用于Maven 3+,以及......

mvn clean javadoc:jar source:jar deploy

我从Jenkins部署到Nexus进行了测试.

这种方法很好,因为我只需要修改一些Jenkins工作,而不需要弄乱我的poms.

  • 感谢您提供无pom解决方案!请注意,**javadoc:jar**和/或**source:jar**必须出现在**install**或**deploy**之前,否则额外的jar将不会"附加"到部署中. (5认同)
  • 这不是OP尝试但不想要的吗? (3认同)
  • FWIW这些选项也可用于`package`:`mvn clean javadoc:jar source:jar package` (2认同)