在 GitHub 工作流程中處理第一方相依性 - Amazon Q Developer

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 GitHub 工作流程中處理第一方相依性

您可以增強 GitHub 工作流程,以便在使用 Amazon Q Developer 進行程式碼轉換時處理第一方相依性。

標準 Amazon Q Developer 工作流程會處理具有公有 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 版本資訊