Java 如何与maven和jenkins一起从快照过渡到发布
我使用Maven作为构建工具,使用Jenkins作为构建服务器。我正在努力使它易于开发和构建 我有以下资料: 全球pomJava 如何与maven和jenkins一起从快照过渡到发布,java,maven,jenkins,Java,Maven,Jenkins,我使用Maven作为构建工具,使用Jenkins作为构建服务器。我正在努力使它易于开发和构建 我有以下资料: 全球pom <project> <!-- ... --> <artifactId>global-pom</artifactId> <!-- ... --> </project> 全球pom 库pom(父pom是全局的),它有大量公共库 <project> <!-
<project>
<!-- ... -->
<artifactId>global-pom</artifactId>
<!-- ... -->
</project>
全球pom
库pom(父pom是全局的),它有大量公共库
<project>
<!-- ... -->
<version>2.0-SNAPSHOT</version>
<artifactId>libraries-pom</artifactId>
<parent>
<!-- ... -->
<artifactId>global-pom</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<properties>
<libraries.version>2.0-SNAPSHOT</libraries.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<!-- ... -->
<artifactId>library-one</artifactId>
<version>${libraries.version}</version>
</dependency>
<dependency>
<!-- ... -->
<artifactId>library-two</artifactId>
<version>${libraries.version}</version>
</dependency>
<!-- ... -->
</dependencies>
</dependencyManagement>
<modules>
<module>library-one</module>
<module>library-two</module>
<!-- ... -->
</modules>
</project>
2.0-快照
图书馆
全球pom
2.0-快照
2.0-快照
一号图书馆
${libraries.version}
图书馆二
${libraries.version}
一号图书馆
图书馆二
公共库(父pom是库)pom将如下所示:
<project>
<!-- ... -->
<version>2.0-SNAPSHOT</version>
<artifactId>library-one</artifactId>
<parent>
<!-- ... -->
<artifactId>libraries-pom</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<!-- ... -->
</project>
<project>
<!-- ... -->
<version>1.0-SNAPSHOT</version>
<artifactId>service-one</artifactId>
<parent>
<!-- ... -->
<artifactId>libraries-pom</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<!-- ... -->
</project>
2.0-快照
一号图书馆
图书馆
2.0-快照
然后是一个服务pom(父pom是库),看起来可能是这样的:
<project>
<!-- ... -->
<version>2.0-SNAPSHOT</version>
<artifactId>library-one</artifactId>
<parent>
<!-- ... -->
<artifactId>libraries-pom</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<!-- ... -->
</project>
<project>
<!-- ... -->
<version>1.0-SNAPSHOT</version>
<artifactId>service-one</artifactId>
<parent>
<!-- ... -->
<artifactId>libraries-pom</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<!-- ... -->
</project>
1.0-快照
服务一
图书馆
2.0-快照
现在,当我在当地发展时,这一切都很好。我可以在Intellij项目中使用所有这些POM,如果我更改其中一个库中的某些内容以用于其中一个项目,那么当我在本地构建和运行时,它知道首先构建库,等等
每当签入某个内容时,就会在Jenkins上自动生成快照版本
当我真正发布时,我不想使用快照版本,我想使用“真实”版本,我想知道如何最好地管理它,以免影响开发或发布
有人有什么想法吗?理想情况下,当我想要发布时,我想转到我的构建服务器并单击构建,它会自动为我整理所有内容-这可能吗?您需要使用Maven发布插件,通过在批处理模式下发出一些Maven命令行指令来执行所有工件的自动发布 为此,请在父pom中包括以下配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<tagNameFormat>v@{project.version}</tagNameFormat>
<goals>deploy</goals>
</configuration>
</plugin>
这将阻止对git的推送。如果发行版有问题,那么您可以执行mvn发行版:回滚
并在本地清理git repo,然后修复发行版插件配置
要在Jenkins中运行,您需要创建一个新作业,该作业将在批处理模式下运行prepare
和perform
命令