28

嘿嘿,

我有一个具有这种结构的 Maven 项目:

家长:

  • 项目清单
  • API 模块
  • 模块2
  • ...
  • 模块5
  • 测试
  • 分销/组装

所以首先我运行父模块,然后我运行构建 api 的模块,然后是依赖于 api 的模块,然后是一个包含测试工具的测试模块,最后我运行一个组装/分发,我在其中打包了一些存档中的模块。由于一些问题,我无法真正改变方式,到目前为止它工作得非常完美。

使用 jenkins,我将它发布到 maven repo,但我只想发布 API 和一些模块,而不是测试模块和分发模块。有没有办法跳过它们?不想发布我并不真正需要的东西:/

4

3 回答 3

37

为了正确理解你,你仍然想运行测试模块,但你不想部署/发布它们。maven -deploy-plugin来救援!工件仍将被构建,但不会被部署。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.7</version>
    <configuration>
        <skip>true</skip>
    </configuration>
  </plugin>

但是,jenkins 发布插件仍然会发布所有工件。与其使用 jenkins 发布插件,不如考虑使用maven-release-plugin 发布,这很容易做到:

mvn release:prepare
mvn release:perform

由于默认目标deployand site,所以一切都应该没问题。

只要确保你scm的根 pom 中有一个标签:

<scm>
    <connection>scm:svn|git:https://...</connection>
    <developerConnection>scm:svn|git:https://...</developerConnection>
</scm>

并且您的版本控制工具命令(git、svn、...)在 PATH 上可用。

于 2013-01-12T19:52:55.913 回答
3

您可以添加一个 Maven 命令行选项来指定要在 jenkins 中构建的模块。

-pl,--projects <arg>                   Comma-delimited list of specified
                                       reactor projects to build instead
                                       of all projects. A project can be
                                       specified by [groupId]:artifactId
                                       or by its relative path.
于 2013-01-13T00:12:23.357 回答
0

聚合器项目的目的是结合简单项目的构建要求。如果您的基本项目有不同的构建要求,请考虑添加一个新的聚合器项目。

在您当前的聚合器项目中禁用部署到您的 Maven 存储库,并创建一个仅包含您希望部署的模块的新聚合器项目。

将这个新项目添加到 Jenkins,使其依赖于您的原始项目并将其配置为部署到您的存储库。

于 2013-01-14T13:06:03.237 回答