是否存在可构建EAR文件的GitHub Action?Maven项目部署WebSphere需求
构建EAR并部署到WebSphere的GitHub Action方案
核心思路
既然是基于Maven的Java项目,无需额外专用GitHub Action,直接借助Maven的ear插件即可完成EAR打包,再在GitHub Actions工作流中集成打包与部署步骤即可。
步骤1:配置Maven EAR打包插件
在项目根目录(多模块项目则在EAR模块)的pom.xml中添加maven-ear-plugin配置,示例如下:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ear-plugin</artifactId> <version>3.3.0</version> <configuration> <finalName>your-service-ear</finalName> <modules> <!-- 关联已构建好的WAR模块 --> <webModule> <groupId>com.your-org</groupId> <artifactId>your-web-service-war</artifactId> <contextRoot>/your-service</contextRoot> </webModule> </modules> <!-- 自定义WebSphere适配的application.xml路径,无需自动生成则设为false --> <generateApplicationXml>false</generateApplicationXml> <applicationXml>${project.basedir}/src/main/application/META-INF/application.xml</applicationXml> </configuration> </plugin> </plugins> </build>
如果无需自定义application.xml,可将generateApplicationXml设为true,让Maven自动生成基础配置。
步骤2:编写GitHub Actions工作流
在项目的.github/workflows/目录下创建build-deploy-ear.yml,内容如下:
name: Build EAR & Deploy to WebSphere on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build-ear: runs-on: ubuntu-latest steps: - name: 拉取代码 uses: actions/checkout@v4 - name: 配置JDK环境 uses: actions/setup-java@v4 with: java-version: '11' # 匹配WebSphere支持的JDK版本 distribution: 'temurin' cache: maven - name: Maven构建EAR包 run: mvn clean package -DskipTests # 多模块项目需指定EAR模块:mvn clean package -pl ear-module -am -DskipTests - name: 上传EAR产物 uses: actions/upload-artifact@v4 with: name: service-ear path: target/*.ear deploy-to-was: needs: build-ear runs-on: ubuntu-latest steps: - name: 下载EAR产物 uses: actions/download-artifact@v4 with: name: service-ear - name: 部署到WebSphere run: | # 使用WebSphere原生wsadmin脚本部署 wsadmin.sh -host ${{ secrets.WAS_HOST }} -port ${{ secrets.WAS_SOAP_PORT }} \ -user ${{ secrets.WAS_USER }} -password ${{ secrets.WAS_PASSWORD }} \ -c "AdminApp.update('your-service', 'app', '-app', '${{ github.workspace }}/*.ear')" # 首次部署替换为:AdminApp.install('${{ github.workspace }}/*.ear', '[ -name your-service ]')
关键说明
- Maven打包逻辑:核心依赖
maven-ear-plugin完成WAR到EAR的整合,GitHub Actions只需调用标准Maven命令,无需额外工具。 - 敏感信息管理:WebSphere的主机地址、端口、账号密码需存入GitHub仓库Secrets,避免明文泄露。
- 部署灵活性:使用原生
wsadmin脚本部署比第三方Action更可控,可根据WebSphere版本调整脚本参数。
内容的提问来源于stack exchange,提问作者VKR
相关产品推荐
相关产品推荐

