如何跳过maven仓库中的版本或特定模块

时间:2013-01-12 17:53:05

标签: maven deployment jenkins repository

Heyho,

我有一个带有这个结构的maven项目:

父:

  • 列表项
  • API模块
  • 模块2
  • ...
  • 单词数
  • 测试
  • 分布/组装

首先我运行父模块,然后运行构建api的模块,然后运行依赖于api的模块,然后运行包含测试工具的测试模块,最后运行汇编/分发我将一些模块打包在一个档案中。 由于一些问题,我无法真正改变方式,它的工作至今仍然完美。

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

3 个答案:

答案 0 :(得分:25)

为了正确理解您,您仍然希望运行测试模块,但您不想部署/释放它们。救援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

由于default goalsdeploysite,所以一切都应该没问题。

请确保您的根pom中有scm标记:

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

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

答案 1 :(得分:2)

您可以添加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.

答案 2 :(得分:0)

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

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

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