Maven 是 Java 生态中的标准构建工具,在 持续集成(CI) 和 持续部署(CD) 过程中,Maven 负责:
CI/CD 工具用于自动化构建、测试和部署,常见工具包括:
docker run -d -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
或者从 Jenkins 官网 下载并安装。
http://localhost:8080
Manage Jenkins
→ Manage Plugins
Available Plugins
搜索 Maven Integration Plugin 并安装。Manage Jenkins
→ Global Tool Configuration
Add Maven
Maven 3.8.6
Install automatically
(可选)Jenkins Dashboard
New Item
Freestyle Project
,输入项目名称,点击 OK
在 Source Code Management
选择 Git:
https://github.com/example/maven-project.git
)main
或 develop
在 Build
→ Add build step
选择 Invoke top-level Maven targets
Maven 3.8.6
clean package
点击 Build Now
,Jenkins 会执行 mvn clean package
进行构建。
可以使用 mvn deploy
将构建产物(JAR/WAR)上传到远程仓库(如 Nexus),或者自动部署到服务器。
在 Build
→ Goals
填写:
clean deploy -DskipTests
配置 pom.xml
<distributionManagement>
<repository>
<id>nexusid>
<url>http://nexus.company.com/repository/releases/url>
repository>
<snapshotRepository>
<id>nexusid>
<url>http://nexus.company.com/repository/snapshots/url>
snapshotRepository>
distributionManagement>
在 settings.xml
配置 Nexus 登录信息
<servers>
<server>
<id>nexusid>
<username>adminusername>
<password>passwordpassword>
server>
servers>
构建后,Jenkins 会自动上传 JAR/WAR 文件到 Nexus 服务器。
GitLab 提供 .gitlab-ci.yml
配置文件,实现自动化 CI/CD。
gitlab-ci.yml
配置在项目根目录创建 .gitlab-ci.yml
:
stages:
- build
- test
- deploy
variables:
MAVEN_CLI_OPTS: "-B -Dmaven.test.skip=true"
MAVEN_IMAGE: "maven:3.8.6-jdk11"
build:
stage: build
image: $MAVEN_IMAGE
script:
- mvn clean package $MAVEN_CLI_OPTS
artifacts:
paths:
- target/*.jar
test:
stage: test
image: $MAVEN_IMAGE
script:
- mvn test
deploy:
stage: deploy
image: $MAVEN_IMAGE
script:
- mvn deploy -DskipTests
提交代码后,GitLab CI/CD 会执行 构建 → 测试 → 部署 流程。
GitHub Actions 提供 .github/workflows/maven.yml
进行自动化构建。
在 .github/workflows/maven.yml
编写:
name: Java CI with Maven
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Setup JDK
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'adopt'
cache: maven
- name: Build with Maven
run: mvn clean package -DskipTests
- name: Run Tests
run: mvn test
提交代码后,GitHub Actions 会自动执行 Maven 构建。
在 CI/CD 流水线中,我们可以使用 Docker 来部署 Maven 构建的 JAR/WAR。
Dockerfile
FROM openjdk:11
WORKDIR /app
COPY target/my-app.jar my-app.jar
CMD ["java", "-jar", "my-app.jar"]
deploy:
stage: deploy
script:
- docker build -t my-app:latest .
- docker tag my-app:latest my-docker-registry.com/my-app:latest
- docker push my-docker-registry.com/my-app:latest
工具 | 作用 |
---|---|
Jenkins | 触发 mvn clean package ,执行构建和自动部署 |
GitLab CI/CD | 通过 .gitlab-ci.yml 定义 mvn install 和 mvn deploy |
GitHub Actions | 通过 maven.yml 在 GitHub 上执行 Maven 构建 |
Docker | 将 Maven 构建产物封装成 Docker 镜像,部署到 K8s |
命令 | 作用 |
---|---|
mvn clean package |
清理、编译、测试、打包 |
mvn install |
安装到本地 Maven 仓库 |
mvn deploy |
部署到远程 Maven 仓库 |
mvn test |
运行单元测试 |
mvn verify |
运行集成测试 |
Maven 是 CI/CD 流水线的重要组成部分,它可以:
✅ 自动化构建
✅ 测试代码质量
✅ 自动化部署
✅ 与 Jenkins、GitLab CI/CD、GitHub Actions 无缝集成
掌握 Maven 与 CI/CD 的集成,可以帮助你实现高效、稳定的 DevOps 工作流!