【问题标题】:How to deploy SNAPSHOT with sources and JavaDoc?如何使用源代码和 JavaDoc 部署 SNAPSHOT?
【发布时间】:2011-06-11 04:08:35
【问题描述】:

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

mvn clean source:jar javadoc:jar deploy

只是为了执行:

mvn clean deploy

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

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

【问题讨论】:

    标签: java maven-2 maven-release-plugin


    【解决方案1】:
    <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's OSS parent POM

    【讨论】:

    • 我正在使用这个设置,而且效果很好。但是我有两个小问题:第一,生成的源不包含在“jar”目标中,您需要“jar-no-fork”。二、发布插件有一个bug,会导致两次生成发布源(因此部署了两次,会导致仓库管理器出现问题)
    • maven-source-plugin:jar 默认附加到package 阶段,因此您可以离开&lt;phase&gt;verify&lt;/phase&gt; 并完成同样的事情。此外,我不确定您为什么要附加此内容以进行验证,因为该阶段旨在“打包项目并运行集成测试”。
    • @mglauche @matt 感谢您的 cmets。我刚刚进行了适当的更改。
    • @Henryk 好的,我已经明确添加了 maven-deploy-plugin 以及 maven 似乎(或尝试)以保证在 POM 中定义插件时执行。不过,这可能需要一些试验。
    • 使用随机 id 创建新的执行我以为你会想要“重新映射”默认的执行
    【解决方案2】:

    Dan 提到的文章还提到了另一种无需修改 pom 且不会很快消失的方法:

    mvn clean javadoc:jar source:jar 安装

    这适用于 Maven 3+,以及...

    mvn clean javadoc:jar source:jar部署

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

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

    【讨论】:

    • 感谢您提供无 pom 解决方案!请注意,javadoc:jar 和/或 source:jar 必须出现在 installdeploy 或额外的 jar 之前不会“附加”到部署中。
    • FWIW 这些选项也适用于packagemvn clean javadoc:jar source:jar package
    • 这是一个很好的答案,因为它告诉你构建和上传源代码和 javadoc 到你的 repo 的确切命令。
    【解决方案3】:

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

    mvn -DperformRelease=true [goals]
    

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

    【讨论】:

    猜你喜欢
    • 2011-11-21
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多