Umgang mit Abhängigkeiten von Erstanbietern in GitHub-Workflows
Sie können Ihren GitHub-Workflow verbessern, um mit Abhängigkeiten von Erstanbietern umzugehen, wenn Sie Amazon Q Developer für die Codetransformation verwenden.
Der Standard-Workflow von Amazon Q Developer verarbeitet Projekte mit öffentlichen Maven-Abhängigkeiten. Unternehmensprojekte enthalten jedoch häufig Abhängigkeiten von Erstanbietern, einschließlich privater Java-Archivdateien (JAR-Dateien), die in öffentlichen Repositorys nicht verfügbar sind. Dieser verbesserte Workflow erweitert die Standardkonfiguration, sodass sowohl öffentliche als auch private Abhängigkeiten unterstützt werden.
Anwendungsfälle für einen verbesserten Workflow
Verwenden Sie die verbesserte GitHub-Workflow-Konfiguration, wenn Ihr Projekt über Folgendes verfügt:
-
Private oder interne JAR-Abhängigkeiten
-
Benutzerdefinierte Dienstprogrammbibliotheken, die in Maven Central nicht verfügbar sind
-
Erstellungsfehler mit der Fehlermeldung
Could not resolve dependencies
Beispielkonfiguration
Das folgende Beispiel zeigt eine vollständige Workflow-Konfiguration, die mit Abhängigkeiten von Erstanbietern umgeht:
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
Die wichtigsten Komponenten des verbesserten Workflows
Der verbesserte GitHub-Workflow besteht aus mehreren Schlüsselkomponenten:
-
Installation der Abhängigkeiten von Erstanbietern
Der Workflow enthält einen wichtigen Schritt für die Installation von privaten Abhängigkeiten mithilfe des Maven-Befehls
install:install-file. Dadurch wird sichergestellt, dass Ihre privaten Abhängigkeiten während der Transformation im lokalen Maven-Repository verfügbar sind. -
Dynamische Verwaltung von Java-Versionen
Der Workflow wechselt je nach Transformationsstatus automatisch zwischen Java 8 und Java 17 und verwendet Umgebungsvariablen zur Verwaltung der Compiler-Eigenschaften.
-
Maven-Konfiguration
Der verbesserte Workflow enthält eine umfassende Maven-Konfiguration mit Folgendem:
-
Zwischenspeicherung von Abhängigkeiten für verbesserte Leistung
-
Vollständige Verwaltung der Compiler-Eigenschaften
-
Beibehaltung des Repository-Layouts
-
POM-Dateibehandlung
-
-
Implementierungsschritte
-
Identifizieren Ihrer privaten Abhängigkeiten in
pom.xml -
Organisieren der JAR-Dateien in Ihrer Repository-Struktur
-
Anpassen des Workflows mit Ihren spezifischen Pfaden und Koordinaten
-
Testen des Workflows an einem Branch, der dem Muster
Q-TRANSFORM-issue-*entspricht
-
-
Fehlersuche
Der Workflow umfasst einen Schritt mit Debug-Informationen, der bei einem Fehler aktiviert wird und Folgendes bereitstellt:
-
Informationen zum Branch
-
Commit-Nachrichtendetails
-
Java-Versionskonfiguration
-
Inhalt des lokalen Maven-Repositorys
-
Informationen zur Java- und Maven-Version
-