在项目开发中,通常是部署过程包含以下步骤

  • 检入代码在建项目全部进入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自动化部署的更多相关文章

  1. Java-Maven-Runoob:Maven 自动化部署

    ylbtech-Java-Maven-Runoob:Maven 自动化部署 1.返回顶部 1. Maven 自动化部署 项目开发过程中,部署的过程包含需如下步骤: 将所的项目代码提交到 SVN 或者代 ...

  2. maven 学习---Maven自动化部署

    在项目开发中,通常是部署过程包含以下步骤 检入代码在建项目全部进入SVN或源代码库中,并标记它. 从SVN下载完整的源代码. 构建应用程序. 生成输出要么WAR或EAR文件存储到一个共同的网络位置. ...

  3. Windows版Jenkins+SVN+Maven自动化部署环境搭建【转】

    前言 因今年公司新产品线较多,为了降低耦合,达到业务分离.重用,提高内部开发效率的目的,采用了基于服务组件.前后端分离的架构体系.与之前传统单应用架构相比,系统部署.配置更加复杂,为了能够频繁地将软件 ...

  4. maven自动化部署插件sshexec-maven-plugin

    在maven pom.xml 文件plugins里增加               <plugin>                 <groupId>com.github.g ...

  5. shell脚本自动化部署

    由于公司技术部团队较小,没有专门的运维团队,所以运维工作技术部承包了. 一.纯人工部署是这样的: 1. 本地打包:一般 maven clean package 2. 借助xftp上传到服务器对应目录 ...

  6. jenkins+git+maven搭建自动化部署项目环境

    简介    折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.co ...

  7. Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记

    前言    持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新 ...

  8. Linux下的Jenkins+Tomcat+Maven+Gitlab+Shell环境的搭建使用(jenkins自动化部署)

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  9. Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)【转】

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

随机推荐

  1. grpc-golang实现账号and密码认证

    // I would recommend to use interceptors: // client grpc.Dial(target, grpc.WithPerRPCCredentials(&am ...

  2. 将map中的查询参数拼装到URL路径中

    被调接口的URL路径: //被调接口url String apiUrl = "http://api.open.xxxxxx.com/implatform/interview/send?acc ...

  3. pip升级Python程序包

    列出当前安装的包: pip list 列出可升级的包: pip list --outdate 升级一个包: pip install --upgrade requests // mac,linux,un ...

  4. opencv项目报错_pFirstBlock==pHead解决办法

    备注: 我上次遇到这个问题的原因是项目设置为MTd导致的 OpenCV是MTd的,我要是改成MDd就编译报错,所以不能采用把项目改为MDd的办法,只能把OpenCV重新编译为MDd的,下载CMAKE, ...

  5. LeetCode: Best Time to Buy and Sell Stock II 解题报告

    Best Time to Buy and Sell Stock IIQuestion SolutionSay you have an array for which the ith element i ...

  6. Fiddler工具非常强大好用

    传递一个json对象发post请求案例: 1.打开Fiddler,点击Composer选项卡 2.下拉框选择Post 3.输入请求的URL,比如:http://localhost:49194/api/ ...

  7. Struts标签判断当前用户是否存在

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  8. [转]JSTL 与 JSP 或者 Java 相互传递变量的代码

    原文地址:http://blog.csdn.net/joyous/article/details/6689861 两种方式 <c:set var="s1" value=&qu ...

  9. [Linux基础环境/软件]Linux下安装mysql

    我是使用免安装的包mysql-5.5.28-linux2.6-x86_64.tar.gz(在http://dev.mysql.com/downloads/可以下载到最新的包)的.直接解压,然后配置,初 ...

  10. ActiveMQ队列特性:删除不活动的队列(Delete Inactive Destinations)

    方法一 通过 ActiveMQ Web 控制台删除. 方法二 通过 Java 代码删除. ActiveMQConnection.destroyDestination(ActiveMQDestinati ...