Maven自动化部署
在项目开发中,通常是部署过程包含以下步骤
检入代码在建项目全部进入SVN或源代码库中,并标记它。
从SVN下载完整的源代码。
构建应用程序。
生成输出要么WAR或EAR文件存储到一个共同的网络位置。
从网络获取的文件和文件部署到生产现场。
更新日期和应用程序的更新版本号的文件。
问题说明
通常有多人参与了上述部署过程。一个团队可能手动签入的代码,其他人可以处理构建等。这很可能是任何一个步骤可能会错过了,由于涉及和由于多团队环境手动工作。例如,较旧的版本可能不会被更换网络设备和部署团队再部署旧版本。
解决
通过结合自动化的部署过程
Maven构建和释放项目,
SubVersion源代码库,管理源代码,
和远程存储库管理器(Jfrog/ Nexus)来管理项目的二进制文件。
更新项目的pom.xml
我们将使用Maven发布插件来创建一个自动释放过程。
例如:bus-core-api 项目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>bus-core-api</groupId>
- <artifactId>bus-core-api</artifactId>
- <version>1.0-SNAPSHOT</version>
- <packaging>jar</packaging>
- <scm>
- <url>http://www.svn.com</url>
- <connection>scm:svn:http://localhost:8080/svn/jrepo/trunk/
- Framework</connection>
- <developerConnection>scm:svn:${username}/${password}@localhost:8080:
- common_core_api:1101:code</developerConnection>
- </scm>
- <distributionManagement>
- <repository>
- <id>Core-API-Java-Release</id>
- <name>Release repository</name>
- <url>http://localhost:8081/nexus/content/repositories/
- Core-Api-Release</url>
- </repository>
- </distributionManagement>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-release-plugin</artifactId>
- <version>2.0-beta-9</version>
- <configuration>
- <useReleaseProfile>false</useReleaseProfile>
- <goals>deploy</goals>
- <scmCommentPrefix>[bus-core-api-release-checkin]-<
- /scmCommentPrefix>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
在pom.xml中,下面是我们使用的重要元素
元素 | 描述 |
---|---|
SCM | Configures the SVN location from where Maven will check out the source code. |
Repositories | Location where built WAR/EAR/JAR or any other artifact will be stored after code build is successful. |
Plugin | maven-release-plugin is configured to automate the deployment process. |
Maven发布插件
Maven使用确实下列有用的任务maven-release-plugin.
- mvn release:clean
它清除以防工作区的最后一个释放的过程并不顺利。
- mvn release:rollback
回滚是为了以防工作空间代码和配置更改的最后一个释放的过程并不顺利。
- mvn release:prepare
执行多个操作次数
检查是否有任何未提交的本地更改或不
确保没有快照依赖
更改应用程序的版本并删除快照从版本,以释放
更新文件到 SVN.
运行测试用例
提交修改后POM文件
标签代码在subversion中
增加版本号和附加快照以备将来发行
提交修改后的POM文件到SVN。
- mvn release:perform
检查出使用前面定义的标签代码并运行Maven的部署目标来部署战争或内置工件档案库。
让我们打开命令控制台,到 C: > MVN >bus-core-api 目录并执行以下命令mvn命令。
- C:MVNus-core-api>mvn release:prepare
Maven将开始建设该项目。一旦构建成功运行以下命令mvn命令。
- C:MVNus-core-api>mvn release:perform
一旦构建成功,您可以在资料库验证上传的JAR文件。
Maven自动化部署的更多相关文章
- Java-Maven-Runoob:Maven 自动化部署
ylbtech-Java-Maven-Runoob:Maven 自动化部署 1.返回顶部 1. Maven 自动化部署 项目开发过程中,部署的过程包含需如下步骤: 将所的项目代码提交到 SVN 或者代 ...
- maven 学习---Maven自动化部署
在项目开发中,通常是部署过程包含以下步骤 检入代码在建项目全部进入SVN或源代码库中,并标记它. 从SVN下载完整的源代码. 构建应用程序. 生成输出要么WAR或EAR文件存储到一个共同的网络位置. ...
- Windows版Jenkins+SVN+Maven自动化部署环境搭建【转】
前言 因今年公司新产品线较多,为了降低耦合,达到业务分离.重用,提高内部开发效率的目的,采用了基于服务组件.前后端分离的架构体系.与之前传统单应用架构相比,系统部署.配置更加复杂,为了能够频繁地将软件 ...
- maven自动化部署插件sshexec-maven-plugin
在maven pom.xml 文件plugins里增加 <plugin> <groupId>com.github.g ...
- shell脚本自动化部署
由于公司技术部团队较小,没有专门的运维团队,所以运维工作技术部承包了. 一.纯人工部署是这样的: 1. 本地打包:一般 maven clean package 2. 借助xftp上传到服务器对应目录 ...
- jenkins+git+maven搭建自动化部署项目环境
简介 折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.co ...
- Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记
前言 持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新 ...
- Linux下的Jenkins+Tomcat+Maven+Gitlab+Shell环境的搭建使用(jenkins自动化部署)
jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...
- Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)【转】
jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...
随机推荐
- C++ 风格与技术 FAQ(中文版)
Bjarne Stroustrup 的 C++ 风格与技术 FAQ(中文版) 原作:Bjarne Stroustrup 翻译:Antigloss 译者的话:尽管我已非常用心,力求完美,但受水平所 ...
- 【转】Android项目使用Ant打包,生成build.xml
记不住,于是原帖转过来,请看原帖:http://blog.csdn.net/ms03001620/article/details/8490238 一.生成build.xml Eclipse中使用Ant ...
- 【线程】linux之thread错误解决方案
1.错误现象: undefined reference to 'pthread_create' undefined reference to 'pthread_join' 2.问题原因: pt ...
- LOCAL_EXPORT_C_INCLUDES和LOCALC_INCLUDES 的差别
http://stackoverflow.com/questions/6595208/what-does-this-line-mean-local-export-c-includes LOCAL_EX ...
- js实现类似微信网页版在可编辑的div中粘贴内容时过滤剪贴板的内容,光标始终在粘贴内容后面,以及将光标定位到最后的方法
过滤剪贴板内容以及定位可编辑div光标的方法: <!DOCTYPE html><html lang="en"><head> <meta ...
- js判断浏览器内核和版本(包括手机端设备)
var X, xue;xue = xue || function(expr, fn) { return xue.dom ? xue.dom(expr, fn) : {};};X = xue;wi ...
- 软链接ln -s以及如何解决其产生“Too many levels of symbolic links ”的错误?
Q1:如何利用ln -s来创建快捷方式? A1:ln(link,链接文件): Windows中的快捷方式,实际上快捷方式和它指向的文件是独立的两个文件,两个都占硬盘空间,只不过用户访问快捷方式时,其效 ...
- 别人不会给你说的---C语言中数组名和指针的区别 及 sizeof用法
引自: http://blog.csdn.net/tianyue168/article/details/5781924 #i nclude <iostream.h> int main( ...
- [转]mysql update case when和where之间的注意事项
原文地址:http://www.cnblogs.com/rwxwsblog/p/4512061.html 在日常开发中由于业务逻辑较为复杂,常常需要用到UPDATE和CASE...WHEN...THE ...
- swift,NSUserDefaults的swift化封装
NSUserDefaultshtml, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMirror- ...