Maven自動化部署
文章目錄
Maven自動化部署
概述
在專案開發中,部署過程通常包含以下步驟:
- 檢查在建專案程式碼全部進入SVN或Git庫中,並標記它。
- 從SVN/Git下載完整的原始碼。
- 構建應用程式。
- 將生成的WAR或JAR檔案儲存到指定的網路位置。
- 從該網路位置獲取檔案並部署到生產現場。
- 更新應用程式的日期和版本號。
問題描述及使用場景
- 場景: 通常有多人蔘與了上述部署過程,一個團隊手動簽入程式碼,其他人處理構建等。 由於涉及多團隊手動操作,任何一個步驟出錯都會導致整個部署過程出問題。例如,網路裝置中較舊的版本可能不會被替換,從而導致部署團隊部署舊版本。
- 問題: 那麼是否能實現自動化部署呢?
- 解決: 使用自動化部署後的部署過程如下:
- Maven構建和釋放專案;
- SVN原始碼庫管理原始碼;
- 遠端儲存庫管理器(Jfrog/Nexus)管理專案的二進位制檔案。
使用maven-plugin
實現自動化部署
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外掛釋出命令
Mavenmaven-release-plugin
常用的任務如下:
-
mvn release:clean
清潔,防止工作區最近一次的釋放過程並不順利。
-
mvn release:rollback
回滾,防止工作空間程式碼和配置更改的最近一次的釋放過程並不順利。
-
mvn release:prepare
執行多個操作:
- 檢查是否有未提交的本地更改
- 確保沒有最新的快照依賴
- 更改應用程式的版本並刪除舊快照版本
- 更新檔案到SVN
- 執行測試用例
- 提交修改後POM檔案
- 在subversion中標籤程式碼
- 增加版本號和附加快照為後續發版做準備
- 提交修改後的POM檔案到SVN
-
mvn release:perform
檢出使用前面定義的標籤程式碼, 並執行Maven的把目標WAR部署到Nexus。
示例:
開啟控制檯, 進入C: > MVN > bus-core-api
目錄執行以下mvn命令:
C:MVN\bus-core-api>mvn release:prepare
Maven將開始建設該專案, 構建成功後執行下面的mvn命令:
C:MVN\bus-core-api>mvn release:perform
構建成功後,可以在Nexus驗證最新的JAR檔案是否上傳。
疑問
Maven私服學習(Nexus)
該技術目前已經有些過時了, 已被當下以Kubernetes (K8s)
為核心的DevOps
雲技術所替代, 後者的自動部署/日誌分析/效能檢測等功能更加有優勢.
相關文章
- Maven 自動化部署Maven
- Maven 自動化構建Maven
- docker-compose+ jenkins + gogs+ maven自動化構建與部署DockerJenkinsGoMaven
- maven自動化構建工具Maven
- Maven:自動化構建工具Maven
- 通過GitHub Action自動部署Maven專案GithubMaven
- jenkins+git+maven+tomcat 實現自動打包部署JenkinsGitMavenTomcat
- 解放雙手 | Jenkins + gitlab + maven 自動打包部署專案JenkinsGitlabMaven
- vue自動化部署指令碼Vue指令碼
- .NET網站自動化部署網站
- Jenkins 自動化(CI/DI)部署Jenkins
- vue 自動化部署 jenkins 篇VueJenkins
- Python自動化部署工具-FabricPython
- Mysql5.6 自動化部署MySql
- Docker 之 Jenkins自動化部署DockerJenkins
- SpringBoot手動部署到Tomcat和自動化熱部署Spring BootTomcat熱部署
- [自動化]基於kolla的自動化部署ceph叢集
- 使用JulieOps管理Kafka自動化部署?Kafka
- devops系統自動化部署流程dev
- GitLab + Jenkins + ACK 自動化部署方案GitlabJenkins
- 如何做Serverless自動化部署Server
- 陷入jenkins自動化部署的坑Jenkins
- 基於Jenkins Pipeline自動化部署Jenkins
- Docker 之 Spring Boot 自動化部署DockerSpring Boot
- Docker+Gitlab+Jenkins+Maven程式碼持續整合與自動部署DockerGitlabJenkinsMaven
- Jenkins+Docker+Gitee+SpringBoot自動化部署JenkinsDockerGiteeSpring Boot
- 利用Github Actions實現自動化部署Github
- Gogs+Jenkins+Docker 自動化部署.NetCoreGoJenkinsDockerNetCore
- iOS自動化打包部署踩坑記iOS
- [原] php + Laravel 實現部署自動化PHPLaravel
- 使用Jenkins自動化部署Java專案JenkinsJava
- jenkins自動化專案部署實戰Jenkins
- [自動化]基於kolla部署的openstack自動化巡檢生成xlsx報告
- Azure DevOps搭建自動化部署CICD流水線dev
- 本地部署GPT全流程自動化檔案GPT
- 用 python 寫一個自動化部署工具Python
- Jenkins + Docker + Gitee自動化部署SpringBoot應用JenkinsDockerGiteeSpring Boot
- Jenkins + Docker + ASP.NET Core自動化部署JenkinsDockerASP.NET