maven项目管理

1、添加SCM

首先我们需要在POM中加入scm信息,这样Maven才能够替你完成svn操作,这里我的配置如下:

Xml代码  :

2、配置maven-release-plugin

这个插件会帮助我们升级pom版本,提交,打tag,然后再升级版本,再提交,等等。基本配置如下:

xml代码  :

这里我们需要注意的是configuration元素下的tagBase元素,它代表了我们svn中的tag目录,也就是说,maven-release-plugin帮我们打tag的时候,其基础目录是什么。

3、注意事项

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

4、开始执行第一个命令

D:\workspace\webapp>mvn release:prepare

[INFO] Scanning for projects...

[INFO]

[INFO] ------------------------------------------------------------------------

[INFO] Building webappName Maven Webapp 1.6-SNAPSHOT

[INFO] ------------------------------------------------------------------------

[INFO]

[INFO] --- maven-release-plugin:2.0-beta-7:prepare (default-cli) @ webappName --

-

[INFO] Release preparation already completed. You can now continue with release:

perform, or start again using the -Dresume=false flag

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 0.860 s

[INFO] Finished at: 2014-11-09T22:53:30+08:00

[INFO] Final Memory: 2M/5M

[INFO] ------------------------------------------------------------------------

上面信息可以看出我当前的版本为1.6-SNAPSHOT,并且版本的准备已经完成。

并且还提示我,接下来可以继续执行的命令为:

release:perform (进行项目的发布) 或者 重新再来准备一次使用-Dresume=false


发布先不管,运行

D:\workspace\webapp>mvn release:prepare -Dresume=false

[INFO] Scanning for projects...

[INFO]

[INFO] ------------------------------------------------------------------------

[INFO] Building webappName Maven Webapp 1.6-SNAPSHOT

[INFO] ------------------------------------------------------------------------

[INFO]

[INFO] --- maven-release-plugin:2.0-beta-7:prepare (default-cli) @ webappName --

-

[INFO] Verifying that there are no local modifications...

[INFO] Executing: svn --non-interactive status

[INFO] Working directory: D:\workspace\webapp

[INFO] Checking dependencies and plugins for snapshots ...

What is the release version for "webappName Maven Webapp"? (packageName:webappNa

me) 1.6: :

你想将1.6-SNAPSHOT发布为什么版本?默认是1.6。”我要的就是1.6,直接回车。

What is SCM release tag or label for "webappName Maven Webapp"? (packageName:web

appName) webappName-1.6: :

发布的tag标签名称是什么?默认为webappName-1.6。”我还是要默认值,直接回车。

What is the new development version for "webappName Maven Webapp"? (packageName:

webappName) 1.7-SNAPSHOT: :

主干上新的版本是什么?默认为1.7-SNAPSHOT。”哈,release插件会自动帮我更新版本到1.7-SNAPSHOT,很好,直接回车。

[INFO] Transforming ‘webappName Maven Webapp‘...

[INFO] Not generating release POMs

[INFO] Executing goals ‘clean verify‘...

[INFO] Executing: mvn clean verify --no-plugin-updates -P center

[WARNING] Command line option -npu is deprecated and will be removed in future M

aven versions.

[INFO] Scanning for projects...

[INFO]

[INFO] -----------------------------------------------------------------

-------

[INFO] Building webappName Maven Webapp 1.6

[INFO] -----------------------------------------------------------------

-------

[INFO]

[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ webappName ---

[INFO] Deleting D:\workspace\webapp\target

[INFO]

[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ we

bappName ---

[WARNING] Using platform encoding (GBK actually) to copy filtered resour

ces, i.e. build is platform dependent!

[INFO] Copying 0 resource

[INFO]

[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ webappN

ame ---

[INFO] No sources to compile

[INFO]

[INFO] --- maven-resources-plugin:2.6:testResources (default-testResourc

es) @ webappName ---

[WARNING] Using platform encoding (GBK actually) to copy filtered resour

ces, i.e. build is platform dependent!

[INFO] skip non existing resourceDirectory D:\workspace\webapp\src\test\

resources

[INFO]

[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @

webappName ---

[INFO] No sources to compile

[INFO]

[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ webappName

---

[INFO] No tests to run.

[INFO]

[INFO] --- maven-war-plugin:2.2:war (default-war) @ webappName ---

[INFO] Packaging webapp

[INFO] Assembling webapp [webappName] in [D:\workspace\webapp\target\web

appName]

[INFO] Processing war project

[INFO] Copying webapp resources [D:\workspace\webapp\src\main\webapp]

[INFO] Webapp assembled in [44 msecs]

[INFO] Building war: D:\workspace\webapp\target\webappName.war

[INFO] WEB-INF\web.xml already added, skipping

[INFO] -----------------------------------------------------------------

-------

[INFO] BUILD SUCCESS

[INFO] -----------------------------------------------------------------

-------

[INFO] Total time: 2.754 s

[INFO] Finished at: 2014-11-09T23:04:31+08:00

[INFO] Final Memory: 4M/9M

[INFO] -----------------------------------------------------------------

-------

[INFO] Checking in modified POMs...

[INFO] Executing: svn --non-interactive commit --file C:\Users\ADMINI~1\AppData\

Local\Temp\maven-scm-375208472.commit --targets C:\Users\ADMINI~1\AppData\Local\

Temp\maven-scm-5511113549166271924-targets

[INFO] Working directory: D:\workspace\webapp

[INFO] Tagging release with the label webappName-1.6...

[INFO] Executing: svn --non-interactive copy --file C:\Users\ADMINI~1\AppData\Lo

cal\Temp\maven-scm-258074596.commit . http://WOP8UNUZM6ZBE4H/svn/webapp/tags/web

appName-1.6

[INFO] Working directory: D:\workspace\webapp

[INFO] Transforming ‘webappName Maven Webapp‘...

[INFO] Not removing release POMs

[INFO] Checking in modified POMs...

[INFO] Executing: svn --non-interactive commit --file C:\Users\ADMINI~1\AppData\

Local\Temp\maven-scm-1222592472.commit --targets C:\Users\ADMINI~1\AppData\Local

\Temp\maven-scm-2494449146640843872-targets

[INFO] Working directory: D:\workspace\webapp

[INFO] Release preparation complete.

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 04:34 min

[INFO] Finished at: 2014-11-09T23:04:34+08:00

[INFO] Final Memory: 2M/5M

[INFO] ------------------------------------------------------------------------

执行成功后pom配置从原来的1.6版本被更新到了1.7

svn服务器上tag添加了1.6版本的信息

项目根目录生成了2新文件

pom.xml.releaseBackup 原来pom文件的备份(版本回滚需要

release.properties前后两版本的关联信息(版本回滚需要

5、发布准备 批量模式执行

还是之前的那个命令就添加2参数

D:\workspace\webapp>mvn --batch-mode release:prepare -Dresume=false

6、项目回滚

前提条件:上一次发布到这次回滚之间没有执行过

mvn release:clean

这个命令。因为这个命令会把前面提到的2文件删除,导致无法回滚

pom.xml.releaseBackup 原来pom文件的备份(版本回滚需要

release.properties前后两版本的关联信息(版本回滚需要

回滚命令

mvn release:rollback
D:\workspace\webapp>mvn release:rollback
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building webappName Maven Webapp 1.8.2-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-release-plugin:2.0-beta-7:rollback (default-cli) @ webappName
--
[INFO] Checking in modified POMs...
[INFO] Executing: svn --non-interactive commit --file C:\Users\ADMINI~1\AppData
Local\Temp\maven-scm-1383801082.commit --targets C:\Users\ADMINI~1\AppData\Loca
\Temp\maven-scm-3876567308953457412-targets
[INFO] Working directory: D:\workspace\webapp
[INFO] Cleaning up after release...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.453 s
[INFO] Finished at: 2014-11-09T23:46:03+08:00
[INFO] Final Memory: 3M/6M
[INFO] ------------------------------------------------------------------------
回滚后版本号从原来的
1.8.2-SNAPSHOT
变成现在的:

而且根路径下的2文件被删除

pom.xml.releaseBackup 原来pom文件的备份(版本回滚需要)

release.properties前后两版本的关联信息(版本回滚需要

在看一下svn服务器tag目录

1.8.1版本还在,说明回滚的时候只是项目中的版本回滚了,但是之前的打的tag没有被删除。。。。

我们可以看到回滚的局限性:
1、只能回滚到上一个版本
2、tag没被删除,需要自己手动的删除
http://maven.apache.org/maven-release/maven-release-plugin/examples/prepare-release.html
http://maven.apache.org/maven-release/maven-release-plugin/prepare-mojo.html


执行mvn --batch-mode release:prepare -Dresume=false 前必须先执行
mvn --batch-mode release:prepare
执行
mvn --batch-mode release:prepare前必须先执行
mvn release:rollback
时间: 2024-10-15 02:58:08

maven项目管理的相关文章

Eclipse下安装及配置maven项目管理工具

①eclipse下maven插件安装. 本地maven安装.环境变量配置完成后,打开eclipse,点击eclipse菜单栏Help->Eclipse Marketplace搜索关键字maven,找到插件Maven Integration for Eclipse 并点击安装即可.安装完成后需要重启eclipse. ②eclipse下maven插件配置. 1.依次执行Window -> Preferences -> Maven -> Installation -> Add 进行

Java—maven项目管理

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建.报告和文档的软件项目管理工具. Maven环境搭建 http://maven.apache.org/download.cgi下载apache-maven-3.5.0-bin.zip,解压到某个目录下 配置环境变量:    是否配置成功: maven的一个案例 1.maven目录结构: src -main -java -package -test -java -package resources 2.在根目录下(与sr

Maven——项目管理工具,可以对 Java 项目进行构建、依赖管理。

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑.当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件. Maven

Maven项目管理:SpringMVC+Mybatis+Velocity整合笔记

Maven创建项目 略…具体过程可参考用Maven创建第一个web项目 配置Spring MVC 导入Spring MVC 需要的包在pom.xml 文件下加入: 123456789101112 <!-- spring mvc begin --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <v

Maven项目管理工具

基于项目对象模型(POM)的概念 作用: Maven的用途之一是服务于构建,它是一个异常强大的构建工具,能够帮我们自动化构建过程,从清理.编译.测试到生成报告,再到打包和部署.我们不需要也不应该一遍又一遍地输入命令,一次又一次地点击鼠标,我们要做的是使用Maven配置好项目,然后输入简单的命令(如mvn clean install),Maven会帮我们处理那些烦琐的任务.Maven是跨平台的,无论是在Windows上,还是在Linux或者Mac上,都可以使用同样的命令.我们也应该认识到,Mave

MyEclipse&amp;Maven项目管理教程:创建Java Maven依赖项目(转载)

本教程介绍了如何通过MyEclipse Web项目,或者其他任何Maven项目来创建一个通用的Java/Maven项目.这些步骤包括基础的创建和使用Maven依赖.您将学习到: 创建一个Maven实用项目 为一个项目添加依赖关系 添加实用项目作为一个依赖关系 没有MyEclipse?立即下载 1. 创建一个Maven实用项目 Maven实用项目将被现有的Maven项目消耗. (1)创建一个Maven项目支持消耗在本教程中创建的项目. (2)选择File>New>Project,在搜索栏中输入M

MyEclipse&amp;Maven项目管理常见问题解答

1. 如何解决"Add JDK"警告 当Maven4MyEclipse第一次工作时,您可能会执行一个Maven操作,这需要一个完整的JDK(而不是仅仅一个JRE)来运行.当发生这种情况时,您可能会看到一个JDK警告.当您看到这样的一个警告后,可以点击Maven JDK链接直接跳转到配置页面,在这里您可以为Maven的使用设置一个JDK. JDK警告 如果您已经有了一些JDK配置(从菜单中选择Window> Preferences,展开Java然后选择安装了的JRE),可以使用下拉

maven+springMVC+mybatis+junit详细搭建过程 【转】

springMVC+mybatis框架搭建 首先我们先要弄清搭建项目的一般流程,需要注意哪些方面,想要什么样的效果,自己的功能有哪些? (假设效果:项目目录结构清晰,能够查询到本地数据库中的内容..) 1.  工程目录结构整理清楚 在src/main/java文件夹中,新建包cn.springmvc.model(存放javabean), cn.springmvc.dao(存放spring与mybatis连接接口), cn.springmvc.service(service接口), cn.spri

maven+springMVC+mybatis+junit详细搭建过程

springMVC+mybatis框架搭建 首先我们先要弄清搭建项目的一般流程,需要注意哪些方面,想要什么样的效果,自己的功能有哪些? (假设效果:项目目录结构清晰,能够查询到本地数据库中的内容..) 1.  工程目录结构整理清楚 在src/main/java文件夹中,新建包cn.springmvc.model(存放javabean), cn.springmvc.dao(存放spring与mybatis连接接口), cn.springmvc.service(service接口), cn.spri