`
jaychang
  • 浏览: 738864 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

Maven release插件打tag,发布release版到nexus

 
阅读更多

一、背景

 SNAPSHOT为快照版,不稳定,开发时使用的版本,当测试稳定后,可发布RELEASE版

下面介绍下,本次实验环境:

Maven 3.3.1

nexus 2.11.1

Subversion 1.8.x

注意:SVN Connector与Subversion(主要是因为BIN目录包含了一些SVN客户端的命令程序)版本需一致

Eclipse Mar(目前发现SVN的图标,比如未同步图标等,不知道为什么不能显示,这个先不管)

 

二、步骤

2.1 新建Maven项目

 

     怎么建就不过多说明了,这个相信大家都已经知道了

 

2.2 右键 Team->Share Project

 commit所有文件

 

2.3 编辑项目pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>cn.jaychang</groupId>
	<artifactId>testapp</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>testapp</name>
	<url>http://maven.apache.org</url>

	<distributionManagement>
		<repository>
			<id>nexus-releases</id>
			<name>Internal Release Repository</name>
			<url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url>
		</repository>
		<snapshotRepository>
			<id>nexus-snapshots</id>
			<name>Internal Snapshot Repository</name>
			<url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>
		</snapshotRepository>
	</distributionManagement>

	<scm>
		<connection>scm:svn:svn://127.0.0.1/javadev/testapp/trunk/</connection>
		<developerConnection>scm:svn:svn://127.0.0.1/javadev/testapp/trunk/</developerConnection>
		<url>svn://127.0.0.1/javadev/testapp/trunk/</url>
	</scm>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-release-plugin</artifactId>
				<version>2.5.2</version>
				<configuration>
					<tagBase>svn://127.0.0.1/javadev/testapp/tags/</tagBase>
					<branchBase>svn://127.0.0.1/javadev/testapp/branches</branchBase>
					<tagNameFormat>@{version}</tagNameFormat>
					<username>${scm.username}</username>
					<password>${scm.password}</password>
					<checkModificationExcludes>
						<checkModificationExclude>.project</checkModificationExclude>
						<checkModificationExclude>.settings</checkModificationExclude>
						<checkModificationExclude>.classpath</checkModificationExclude>
					</checkModificationExcludes>
			       </configuration>
			</plugin>
		</plugins>
	</build>
</project>

 

接着,确保你的所有代码都提交了,如果你有未提交代码,release插件会报错,既然你要发布版本了,就表示代码是稳定的,所以要么要么把代码提交了,要么把本地的更改抛弃了。

 

2.4 进入testapp项目目录

CMD下执行好一些

mvn release:prepare
执行过程中,你会遇到这样的提示:
What is the release version for "Unnamed - org.myorg:myapp:jar:1.0-SNAPSHOT"? (xxx.xxx.xxx) 0.0.1: :
——“你想将-0.0.1-SNAPSHOT发布为什么版本?默认是0.0.1。”我要的就是0.0.1,直接回车。
What is SCM release tag or label for "Unnamed - xxx.xxx.xxx:jar:0.0.1-SNAPSHOT"? (xxx.xxx.xxx) 0.0.1: :
——“发布的tag标签名称是什么?默认为0.0.1。”我还是要默认值,直接回车。
What is the new development version for "Unnamed - xxx.xxx.xxx:jar:0.0.1-SNAPSHOT"? (xxx.xxx.xxx) 0.0.2-SNAPSHOT: :
——“主干上新的版本是什么?默认为0.0.2-SNAPSHOT。”哈,release插件会自动帮我更新版本到0.0.2-SNAPSHOT,很好,直接回车。
然后屏幕刷阿刷,maven在build我们的项目,并进行了一些svn操作,你可以仔细查看下日志。
那么结果是什么呢?你可以浏览下svn仓库:
我们多了一个tag:

 


 
 

这就是需要发布的版本0.0.1。
再看看trunk中的POM,其版本自动升级成了0.0.2-SNAPSHOT。
这不正是我们想要的么?等等,好像缺了点什么,对了,0.0.1还没有发布到仓库中呢。
再一次屏住呼吸,执行:

mvn release:peform

 

maven-release-plugin会自动帮我们签出刚才打的tag,然后打包,分发到远程Maven仓库中,至此,整个版本的升级,打标签,发布等工作全部完成。我们可以在远程Maven仓库中看到正式发布的0.0.1版本。

这可是自动化的 正式的 版本发布!

 

 

此时项目的pom.xml中 version变成了0.0.2-SNAPSHOT

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>cn.jaychang</groupId>
	<artifactId>testapp</artifactId>
	<version>0.0.2-SNAPSHOT</version>
	<packaging>jar</packaging>
...

 

 

存在问题

 

Maven多模块项目,目前还没有实验成功。

 多模块项目结构(这里看上去没有跟SVN同步,可能是Eclipse Mar的问题吧,实际这个项目已经check in到SVN上了):


 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>cn.jaychang.mybbs</groupId>
	<artifactId>mybbs-group</artifactId>
	<version>1.0.0-SNAPSHOT</version>
	<packaging>pom</packaging>
	<name>myapp</name>
	<url>http://maven.apache.org</url>

	<distributionManagement>
		<repository>
			<id>nexus-releases</id>
			<name>Internal Release Repository</name>
			<url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url>
		</repository>
		<snapshotRepository>
			<id>nexus-snapshots</id>
			<name>Internal Snapshot Repository</name>
			<url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>
		</snapshotRepository>
	</distributionManagement>

	<scm>
		<connection>scm:svn:svn://127.0.0.1/javadev/mybbs/trunk/</connection>
		<developerConnection>scm:svn:svn://127.0.0.1/javadev/mybbs/trunk/</developerConnection>
		<url>svn://127.0.0.1/javadev/mybbs/trunk/</url>
	</scm>

	<modules>
		<module>mybbs-parent</module>
		<module>mybbs-common</module>
		<module>mybbs-business</module>
		<module>mybbs-web</module>
	</modules>
	<build>
		
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-release-plugin</artifactId>
				<version>2.5.2</version>
				<configuration>
					<tagBase>svn://127.0.0.1/javadev/mybbs/tags/</tagBase>
					<tagNameFormat>v@{project.version}</tagNameFormat>
					<username>${scm.username}</username>
					<password>${scm.password}</password>
					 <checkModificationExcludes>  
                        <checkModificationExclude>.project</checkModificationExclude>  
                        <checkModificationExclude>.settings</checkModificationExclude>
                        <checkModificationExclude>.classpath</checkModificationExclude>  
                    </checkModificationExcludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

 
 

在mvn release:prepare阶段 老是报

Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.2:prepare (default-cli) on project mybbs-group: Cannot prepare the release because you have local modifications :

[ERROR] [mybbs-common\.classpath:unknown]
[ERROR] [mybbs-common\.project:unknown]
[ERROR] [mybbs-parent\.project:unknown]
[ERROR] [mybbs-web\.classpath:unknown]
[ERROR] [mybbs-web\.project:unknown]
[ERROR] [pom.xml:modified]



 

 从错误上看,mybbs的pom.xml

的配置 <checkModificationExcludes> 
                        <checkModificationExclude>.project</checkModificationExclude> 
                        <checkModificationExclude>.settings</checkModificationExclude>
                        <checkModificationExclude>.classpath</checkModificationExclude> 
                    </checkModificationExcludes>

但对于mybbs-common,mybbs-business,mybbs-web  modoule模块并没有起作用。

这个问题困扰了好久,不知道怎么解决,如果有谁知道,还请赐教哈

  • 大小: 83.1 KB
  • 大小: 100.6 KB
  • 大小: 10.8 KB
  • 大小: 7.5 KB
  • 大小: 4.4 KB
分享到:
评论
2 楼 jaychang 2015-12-16  
quqibing 写道
请问一下,你的${scm.username}是在哪配置或者传入的?

MAVEN安装目录/conf/settings.xml里配置的

             <profile>
<id>default-build-param</id>
<properties>
<project.build.sourceEncoding>utf8</project.build.sourceEncoding>
<maven.compiler.source>6</maven.compiler.source>
<maven.compiler.target>6</maven.compiler.target>
<maven.compiler.encoding>utf8</maven.compiler.encoding>
<scm.username>username</scm.username>
<scm.password>password</scm.password>
</properties>
</profile>
1 楼 quqibing 2015-12-02  
请问一下,你的${scm.username}是在哪配置或者传入的?

相关推荐

    Maven Nexus 私服搭建

    Maven Nexus 私服搭建 从零开始,资源下载、安装指导、开发配置说明

    nexus 搭建 maven仓库

    nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库

    Maven_Release_Plugin配置

    `maven-release-plugin`配置了插件的版本以及发布时的一些行为,如自动更新子模块版本、是否推送变更到版本控制系统等。 使用Maven Release Plugin进行发布通常包含以下步骤: 1. 执行`mvn release:prepare`命令,...

    Maven插件实现自动化版本发布.docx

    其中,`maven-release-plugin`插件对于简化版本发布流程起到了重要作用。 #### 二、基本介绍 `maven-release-plugin`是Maven项目中的一项重要组件,它主要用于自动化处理项目的版本发布流程。通过使用此插件,...

    maven-compiler-plugin-3.8.0-source-release插件

    下载 `maven-compiler-plugin-3.8.0-source-release` 后,将其添加到 Maven 的本地仓库,或者在 `pom.xml` 中声明依赖,以便在构建过程中自动下载。对于大型项目,推荐使用 Maven 的私有仓库来存储常用插件,以提高...

    maven3.8.3+nexus3.34.zip

    4. **版本控制**:Nexus支持对发布到仓库的工件进行版本控制,便于版本回溯和管理。 5. **质量控制**:提供检查工件的签名和哈希值功能,确保下载的库是安全无污染的。 6. **RESTful API**:Nexus提供了丰富的API...

    apache-maven的插件包:apache-maven-3.3.9-bin.zip

    这个版本发布于2015年,是Maven 3的一个稳定版本,提供了许多改进和新特性,包括性能优化、更好的错误报告以及对Java 8的支持。 描述中的信息虽然简洁,但暗示了这个压缩包包含的是Maven的可执行文件和必要的库文件...

    maven nexus 配置

    maven nexus 配置,简要介绍如何配置nexus。。。。。。

    Gradle maven工件发布与maven、maven发布、android maven Gradle插件的演练

    【maven】说明:Gradle maven工件发布与maven、maven发布、android maven Gradle插件的演练。该项目包含..., (Gradle maven artifacts publishing walkaround with maven , maven-publish , android-maven gradle ...

    nexus maven 私服搭建

    Nexus 是 Sonatype 公司提供的一款强大的 Maven 仓库管理器,它可以作为一个代理仓库,缓存外部仓库(如 Maven 中央仓库)的依赖,同时也可以作为内部仓库,用于存储和发布自定义组件。此外,Nexus 还支持 Ivy、...

    maven仓库插件

    4. `release`: 用于处理版本发布相关的操作,如版本号更新、tag创建等。 ** Maven的配置与使用 ** 在`pom.xml`文件中,我们可以通过`&lt;build&gt;`标签下的`&lt;plugins&gt;`部分来配置和使用Maven插件。例如,为了配置Maven...

    教你如何给eclipse安装maven插件

    Eclipse中安装Maven插件的步骤详解 在本篇文章中,我们将详细介绍如何在Eclipse中安装Maven插件。Maven是一种流行的项目管理工具,广泛应用于Java项目的构建和管理。Eclipse是目前最流行的集成开发环境(IDE),它...

    maven私服搭建-nexus的部署

    maven私服搭建-nexus的部署 Maven 私服是指在局域网或 Intranet 中搭建的 Maven 仓库,用于存储和管理项目依赖的 Jar 包。Nexus 是一个流行的 Maven 私服解决方案,提供了强大的仓库管理功能。 在本文中,我们将...

    maven+nexus完整手册

    ### Maven+Nexus 完整手册 #### 一、Nexus 安装与启动 Nexus 是一款由 Sonatype 提供的开源组件管理平台,能够帮助开发者有效地管理项目的依赖关系。安装 Nexus 的步骤主要包括: 1. **下载 Nexus**:访问官方...

    lugin-repository(maven nexus-2.11插件)

    ** Maven Nexus 2.11 插件详解 ** Maven Nexus 2.11 是一个强大的 Maven 仓库管理器,它提供了对 Maven 仓库的全面控制,包括代理远程仓库、存储本地仓库以及构建和发布自定义工件。在开发过程中,Nexus 可以作为...

    IDEA插件推荐之Maven-Helper的教程图解

    Maven-Helper 插件是 IntelliJ IDEA 中的一款功能强大且实用的插件,旨在帮助开发者更好地管理 Maven 项目的依赖关系。下面是 Maven-Helper 插件的主要知识点: 1. 依赖关系查看:Maven-Helper 插件提供了一个简洁...

    maven 私服 nexus2 nexus3 安装与说明

    maven 私服 nexus2 nexus3 安装与说明,只有简单的安装,没有详细的配置使用说明

    eclipse安装maven插件需要包

    然而,在某些网络环境不佳的情况下,Eclipse可能无法通过内置的更新机制在线安装Maven插件。本文将详细介绍如何在Eclipse中离线安装Maven插件,以及如何配置Windows环境来确保Maven的正常工作。 首先,我们需要在...

    maven快照版本和发布版本.docx

    当后端团队频繁地进行bug修复或功能改进,需要频繁地将更新的库发布到远程仓库时,这会带来一些问题。比如,每次后端团队更新代码,都需要通知前端团队,并要求他们更新pom.xml文件以引用最新版本。 为了解决这个...

Global site tag (gtag.js) - Google Analytics