当我们开发Java应用程序时,经常需要将已编译的代码打包成可执行的jar文件,并将其发布到Maven中央仓库。为了简化这一过程,我们可以使用持续集成和交付(CI/CD)工具如Github Action,以自动化和简化这些步骤。以下是使用Github Action发布jar文件到Maven中央仓库的详细介绍:
实现过程
1.创建Maven项目
首先,创建一个Maven项目并编写应用程序的代码。确保在pom.xml文件中定义了应用程序的依赖项和构建配置,以及正确的maven配置以发布jar到中央仓库。
2.创建Github Action工作流程
在github仓库的根目录下创建 .github/workflows/maven-publish.yml
文件,用于定义CI/CD工作流程,实现将打包好的jar文件自动部署到Maven 中央仓库。
以下是一个基本示例:
name: Maven Publish
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: "11"
- name: Build with Maven
run: mvn -B clean package -DskipTests
- name: Publish to Maven
run: mvn -B deploy
env:
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
3.配置Maven credentials
在前面的示例中,MAVEN_USERNAME
和 MAVEN_PASSWORD
是 Github Secrets,我们需要在Github repository的Settings->Secrets里面添加这些Secrets,并将其用于Maven身份验证。
4.构建并发布代码
执行一次代码提交(commit),Github Action会自动build应用程序,打包应用程序并将其发布到Maven中央仓库中。
5.验证是否发布到中央仓库
登录到 Maven Central 的网站并搜索你的组织和项目名称,查看是否已成功将Jar文件发布到 Maven 中央仓库中。
示例1
下面是一个更详细的示例,包括构建Docker容器和发布到Heroku的步骤。这个示例假设你已经用Spring Boot编写了一个Web应用程序,并使用了Maven作为构建工具。
name: Build and Deploy
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: "11"
- name: Build with Maven
run: mvn clean install -DskipTests
- name: Build Docker image
uses: docker/build-push-action@v1
with:
context: .
push: true
tags: username/image-name:latest
- name: Deploy to Heroku
uses: jontewks/puppeteer-action@2.0.5
with:
args: deploy heroku-app-name image-name
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
publish:
needs: build
runs-on: ubuntu-latest
steps:
- name: Set up Maven
uses: sungjk/maven-setup-action@v1.1.4
- name: Deploy to Maven Central
run: mvn deploy -DskipTests
env:
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
示例2
另一个示例,假设你已经用Gradle编写了Java应用程序。这个示例演示了如何在Github Actions中执行Gradle build并将构建的jar文件发布到Maven仓库中。
name: Build and Deploy
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: "11"
- name: Build with Gradle
run: ./gradlew clean build -x test
publish:
needs: build
runs-on: ubuntu-latest
steps:
- name: Set up Maven
uses: sungjk/maven-setup-action@v1.1.4
- name: Deploy to Maven Central
run: ./gradlew publish
env:
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
以上是关于使用GitHUb Action发布jar到Maven中央仓库的攻略及两个示例说明,希望可以帮助到您。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用CI/CD工具Github Action发布jar到Maven中央仓库的详细介绍 - Python技术站