【问题标题】:How to create jar archive of projects sources with maven如何使用 maven 创建项目源的 jar 存档
【发布时间】:2012-07-24 10:32:12
【问题描述】:

我在项目对象模型中包含以下 sn-p

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.1.2</version>
  </plugin>

根据 maven.apache.org,插件将jar 目标附加到包阶段。 但是,执行“mvn clean ; mvn package”不会在目标目录中生成 project-sources.jar。

编辑:可能我不明白来自网站的评论,我引用了:“[来源:jar 目标] 默认绑定到生命周期阶段:包。”我希望,当我包含如上所示的插件部分时,maven 已经将 source:jar 目标绑定到包阶段。我在这里误会了吗?评论是什么意思?

马蒂亚斯。

【问题讨论】:

    标签: maven pom.xml maven-source-plugin


    【解决方案1】:

    文档有点误导。该插件具有包的默认执行阶段,但没有默认目标。我相信您已经指定了一个目标以使插件正常工作。

    【讨论】:

    • 这个答案确实是“正确的”并且回答了@Matthias 直接提出的“为什么”问题(我赞成),但是对于我的金钱/谷歌搜索,Raghuram 和 MichalKalinowski 都给出了很好的例子来回答不可避免的“如何”。
    【解决方案2】:

    您需要将plugin 绑定到一个maven 生命周期目标,以便它生成源jar。否则,您需要显式调用它mvn source:jar

    正如记录的here,您可以将其绑定到jar 目标。

    【讨论】:

    • 可能我不明白来自网站的评论,我引用了:“[来源:jar 目标] 默认绑定到生命周期阶段:包。”我希望目标已经绑定(只是包括插件定义)。
    • @Matthias。估计文件不正确。您可以运行mvn help:effective-pom 来查看其他插件(如compile 绑定到一个阶段),但不是这个。此外,这些示例清楚地表明需要将插件绑定到一个阶段。
    【解决方案3】:

    试试这个:

    <project>
      ...
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.1.2</version>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      ...
    </project>
    

    然后它使用jar-no-fork 目标到生命周期的package 阶段的默认绑定,这可能就是您需要的。

    【讨论】:

    • 请重新阅读我的问题,因为我试图更清楚地阐明我的中心点。我不是在寻找可行的解决方案,而是为了理解我引用的文档。
    • 查看answer 以帮助理解文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 2011-10-23
    • 2012-01-24
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多