You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在可构建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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 11:45:56