在 GitHub 工作流中处理第一方依赖 - Amazon Q 开发者版

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 GitHub 工作流中处理第一方依赖

使用 Amazon Q 开发者版进行代码转换时,您可以增强 GitHub 工作流,以支持处理第一方依赖。

Amazon Q 开发者版的标准工作流可处理包含公共 Maven 依赖的项目。但是,企业项目通常包含第一方依赖项,包括公共存储库中不可用的私有 Java ARchive (JAR 文件)。此增强型工作流对标准配置进行了扩展,可同时支持公共依赖和私有依赖。

增强型工作流的使用案例

如果您的项目存在以下情况,可使用增强型 GitHub 工作流配置:

  • 包含私有或内部 JAR 依赖

  • 包含未在 Maven Central 中提供的自定义工具库

  • 构建时出现 Could not resolve dependencies 错误

示例配置

以下示例展示了可处理第一方依赖的完整工作流配置:

name: Q Code Transformation on: push: branches: - 'Q-TRANSFORM-issue-*' env: MAVEN_CLI_OPTS: >- -Djava.version=${{ contains(github.event.head_commit.message, 'Code transformation completed') && '17' || '1.8' }} -Dmaven.compiler.source=${{ contains(github.event.head_commit.message, 'Code transformation completed') && '17' || '1.8' }} -Dmaven.compiler.target=${{ contains(github.event.head_commit.message, 'Code transformation completed') && '17' || '1.8' }} jobs: q-code-transformation: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: java-version: ${{ contains(github.event.head_commit.message, 'Code transformation completed') && '17' || '8' }} distribution: 'temurin' - name: Cache Maven dependencies uses: actions/cache@v4 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 - name: Install First-Party Dependencies run: | mvn install:install-file \ -Dfile=./your-library/built-library/1.0.0/your-library-1.0.0.jar \ -DgroupId=com.yourcompany.samples \ -DartifactId=your-library \ -Dversion=1.0.0 \ -Dpackaging=jar - name: Build and copy dependencies run: | mvn ${{ env.MAVEN_CLI_OPTS }} verify mvn ${{ env.MAVEN_CLI_OPTS }} dependency:copy-dependencies -DoutputDirectory=dependencies -Dmdep.useRepositoryLayout=true -Dmdep.copyPom=true -Dmdep.addParentPoms=true - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: q-code-transformation-dependencies path: dependencies - name: Debug information if: failure() run: | echo "Branch: ${{ github.ref_name }}" echo "Commit message: ${{ github.event.head_commit.message }}" echo "Java version logic result: ${{ contains(github.event.head_commit.message, 'Code transformation completed') && '17' || '8' }}" echo "Local Maven repository contents:" find ~/.m2/repository/com/yourcompany/samples -name "*.jar" 2>/dev/null || echo "No your-library found in local repo" java -version mvn -version

增强型工作流的关键组件

增强型 GitHub 工作流包含多个关键组件:

  • 第一方依赖安装

    工作流中包含一个关键步骤:使用 Maven 命令 install:install-file 安装私有依赖。这可确保在转换过程中,私有依赖能在本地 Maven 存储库中可用。

  • 动态 Java 版本处理

    工作流会根据转换状态,通过环境变量管理编译器属性,自动在 Java 8 和 Java 17 之间切换。

  • Maven 配置

    增强型工作流包含全面的 Maven 配置,具体包括:

    • 依赖缓存(用于提高性能)

    • 完整的编译器属性管理

    • 存储库结构保留

    • POM 文件处理

  • 实施步骤

    • pom.xml 文件中识别您的私有依赖

    • 在存储库结构中整理 JAR 文件

    • 使用您的特定路径和坐标自定义工作流

    • 在符合 Q-TRANSFORM-issue-* 模式的分支上测试工作流

  • 故障排查

    该工作流包含一个“调试信息”步骤,会在执行失败时激活,提供以下信息:

    • 分支信息

    • 提交消息详细信息

    • Java 版本配置

    • 本地 Maven 存储库内容

    • Java 和 Maven 版本信息