一、背景
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模块并没有起作用。
这个问题困扰了好久,不知道怎么解决,如果有谁知道,还请赐教哈
相关推荐
Maven Nexus 私服搭建 从零开始,资源下载、安装指导、开发配置说明
nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库
maven nexus 配置,简要介绍如何配置nexus。。。。。。
maven maven私服 nexus 私服
maven私服nexus最新版本2.9稳定版
apache-maven的插件包:apache-maven-3.3.9-bin.zip。。
nexus maven 私服搭建,附带搭建教程。
安装自己的maven服务器,解压后进入\nexus-2.1.2-bundle\nexus-2.1.2\bin\jsw\,根据操作系统类型选择文件夹,选择是windows-x86-64文件夹,双击console-nexus.bat运行。游览器中输入http://127.0.0.1:8081/nexus/,...
本文适合但不限于软件开发人员阅读。本文档能够使阅读者对maven的maven-release-plugin插件有一个宏观且全面的了解,并且能够使用该插件进行程序的版本发布、代码库打分支等操作
自己写的一份关于maven + nexus仓库管理的使用手记 包括了nexus的基本使用及nexus权限管理等
配置Nexus代理中央仓库,其它任何公开的Maven仓库,将你组织内部的Maven配置指向Nexus,这样所有构件都将从Nexus下载,如果Nexus没有你要的构件,它会自动先去外部仓库下载到本地,仅一次。 本地宿主仓库。Nexus可以...
nexus-2.14.5-02-bundle.zip nexus-3.19.1-01-unix.tar.gz nexus-3.19.1-01-win64.zip 包含以上三种安装包,需要可自行下载。
现在eclipse的社区版都不内置maven插件了,站点在线安装实在是太痛苦了(我装了6个小时),于是急于寻找一种离线安装的办法,可是在网上又找不到对应的m2e包(我用的eclipse4.7),于是我决定将站点下的文件(很多)...
eclipse maven 离线插件
Windows 下Nexus搭建Maven私服 Windows 下Nexus搭建Maven私服
Maven nexus 安装包
官网公布的 Eclipse 的 Maven2 插件,本插件...关于安装 Maven2 插件到 Eclipse 的详细步骤,请参考博客《集成 Maven 2 插件到 eclipse 的过程》,博客地址:http://blog.csdn.net/defonds/article/details/7847446。
4、在links中新建maven.txt文件,内容为插件地址,例如:path=D:\eclipse_gzds\myplugins\maven(注意这里斜杠,不是反斜杠) 5、将maven.txt扩展名改为maven.lin 6、在eclipse根目录下找到eclipse.ini并打开,在...
对于eclipse无法在线安装maven插件的解决办法。首先windows配置maven环境,然后在eclipse离线安装maven插件。具体方法可以在我的博客中看到
1,打开你本地的eclipse根目录,随便新建一个文件夹例如mavenPlugin,把maven离线插件包中两个文件夹复制到这个新建的这个文件夹里边. 2,找到eclipse根目录下的dropins文件夹,进去后,新建一个.link文件,例如maven...