{"meta":{"title":"Erstellen und Testen Java mit Maven","intro":"Erfahren Sie, wie Sie einen CI-Workflow (Continuous Integration) in GitHub Actions erstellen und testen, um Ihr Java Projekt mit Maven zu erstellen und zu testen.","product":"GitHub Actions","breadcrumbs":[{"href":"/de/actions","title":"GitHub Actions"},{"href":"/de/actions/tutorials","title":"Anleitungen"},{"href":"/de/actions/tutorials/build-and-test-code","title":"Erstellen und Testen von Code"},{"href":"/de/actions/tutorials/build-and-test-code/java-with-maven","title":"Java mit Maven"}],"documentType":"article"},"body":"# Erstellen und Testen Java mit Maven\n\nErfahren Sie, wie Sie einen CI-Workflow (Continuous Integration) in GitHub Actions erstellen und testen, um Ihr Java Projekt mit Maven zu erstellen und zu testen.\n\n## Einleitung\n\nIn diesem Leitfaden erfahren Sie, wie Sie einen Workflow erstellen, der eine kontinuierliche Integration (CI) für Ihr Java Projekt mithilfe des Maven Software-Projektmanagementtools durchführt. Der Workflow, den du erstellst, zeigt Dir, wenn Commits zu einem Pull-Request zu Build- oder Testfehlern für deinen Standard-Zweig führen. Dieser Ansatz kann dazu beitragen, dass dein Code immer brauchbar ist. Sie können Ihren CI-Workflow zum Zwischenspeichern von Dateien und Hochladen von Artefakten aus einer Workflowausführung hochladen.\n\nGitHub-gehostete Runner haben einen Toolcache mit vorinstallierter Software, zu der Java Development Kits (JDKs) und Maven gehören. Die Liste der Software und der vorinstallierten Versionen für JDK und Maven finden Sie unter [Von GitHub gehostete Runner](/de/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software).\n\n## Voraussetzungen\n\nDu solltest mit YAML und der Syntax für GitHub Actions vertraut sein. Weitere Informationen finden Sie unter\n\n* [Workflowsyntax für GitHub Actions](/de/actions/using-workflows/workflow-syntax-for-github-actions)\n* [Schreiben von Workflows](/de/actions/learn-github-actions)\n\nEs wird empfohlen, ein grundlegendes Verständnis von Java und dem Maven-Framework zu haben. Weitere Informationen findest du in der Maven-Dokumentation im [Maven-Leitfaden zu den ersten Schritten](https://maven.apache.org/guides/getting-started/index.html).\n\n## Verwenden einer Maven-Workflowvorlage\n\nFügen Sie für einen schnellen Einstieg dem Verzeichnis `.github/workflows` Ihres Repositorys eine Workflowvorlage hinzu.\n\nGitHub stellt eine Workflowvorlage für Maven bereit, die für die meisten Java-Projekte mit Maven funktionieren sollte. In den folgenden Abschnitten dieser Anleitung finden Sie Beispiele dafür, wie diese Workflowvorlage angepasst werden kann.\n\n1. Navigieren Sie auf GitHub zur Hauptseite des Repositorys.\n\n2. Klicke unter dem Repositorynamen auf **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-play\" aria-label=\"play\" role=\"img\"><path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z\"></path></svg> Actions**.\n\n   ![Screenshot: Registerkarten für das Repository „github/docs“. Die Registerkarte „Aktionen“ ist mit einem orangefarbenen Rahmen hervorgehoben.](/assets/images/help/repository/actions-tab-global-nav-update.png)\n\n3. Wenn du bereits über einen Workflow im Repository verfügst, klicke auf **Neuer Workflow**.\n\n4. Auf der Seite „Workflow auswählen“ wird eine Auswahl empfohlener Workflowvorlagen angezeigt. Suchen Sie nach \"Java mit Maven\".\n\n5. Klicken Sie im Workflow \"Java mit Maven\" auf **Configure**.\n\n6. Bearbeiten Sie den Workflow nach Bedarf. Ändern Sie beispielsweise die Java-Version.\n\n7. Klicke auf **Änderungen committen**.\n\nDie `maven.yml`-Workflowdatei wird dem `.github/workflows`-Verzeichnis Ihres Repositorys hinzugefügt.\n\n### Spezifizieren der Java-Version und -Architektur\n\nDie Workflowvorlage richtet `PATH` so ein, dass OpenJDK 8 für die x64-Plattform enthalten ist. Wenn du eine andere Java-Version verwenden willst oder auf eine andere Architektur (`x64` oder `x86`) abzielen möchtest, kannst du die `setup-java`-Aktion verwenden, um eine andere Java-Laufzeitumgebung auszuwählen.\n\nUm etwa Version 11 des JDK zu verwenden, das von Adoptium für die x64-Plattform bereitgestellt wird, kannst du die Aktion `setup-java` verwenden und die Parameter `java-version`, `distribution` und `architecture` für `'11'`, `'temurin'` und `x64` konfigurieren.\n\n```yaml copy\nsteps:\n  - uses: actions/checkout@v6\n  - name: Set up JDK 11 for x64\n    uses: actions/setup-java@v4\n    with:\n      java-version: '11'\n      distribution: 'temurin'\n      architecture: x64\n```\n\nWeitere Informationen findest du unter der Aktion [`setup-java`](https://github.com/actions/setup-java).\n\n## Deinen Code bauen und testen\n\nDu kannst die gleichen Befehle verwenden, die du auch lokal verwendest, um deinen Code zu bauen und zu testen.\n\nDie Workflowvorlage führt standardmäßig das `package`-Ziel aus. In der Standard-Maven-Konfiguration lädt dieser Befehl Abhängigkeiten herunter, baut Klassen, führt Tests durch und paketiert Klassen in ihr verteilbares Format, zum Beispiel eine JAR-Datei.\n\nWenn du zum Bauen deines Projekts andere Befehle verwenden oder ein anderes Ziel auszuführen möchtest, kannst du dies angeben. Sie können beispielsweise das `verify`-Ziel ausführen, das in einer `pom-ci.xml`-Datei konfiguriert ist.\n\n```yaml copy\nsteps:\n  - uses: actions/checkout@v6\n  - uses: actions/setup-java@v4\n    with:\n      java-version: '17'\n      distribution: 'temurin'\n  - name: Run the Maven verify phase\n    run: mvn --batch-mode --update-snapshots verify\n```\n\n## Abhängigkeiten „cachen“ (zwischenspeichern)\n\nDu kannst deine Abhängigkeiten zwischenspeichern, um die Workflow-Ausführungen zu beschleunigen. Nach einer erfolgreichen Ausführung wird dein lokales Maven-Repository in einem Cache gespeichert. Bei zukünftigen Workflow-Ausführungen wird der Cache wiederhergestellt, so dass Abhängigkeiten nicht aus entfernten Maven-Repositories heruntergeladen werden müssen. Sie können Abhängigkeiten einfach mithilfe der [`setup-java`-Aktion zwischenspeichern](https://github.com/marketplace/actions/setup-java-jdk) oder die [`cache`-Aktion](https://github.com/actions/cache) verwenden, um eine benutzerdefinierte und stärker erweiterte Konfiguration zu verwenden.\n\n```yaml copy\nsteps:\n  - uses: actions/checkout@v6\n  - name: Set up JDK 17\n    uses: actions/setup-java@v4\n    with:\n      java-version: '17'\n      distribution: 'temurin'\n      cache: maven\n  - name: Build with Maven\n    run: mvn --batch-mode --update-snapshots verify\n```\n\nDieser Workflow speichert den Inhalt deines lokalen Maven-Repositorys, das sich im Verzeichnis `.m2` des Basisverzeichnisses auf dem Runner befindet. Der Cacheschlüssel ist der Hashinhalt von `pom.xml`, sodass Änderungen an `pom.xml` den Cache ungültig machen.\n\n## Workflow-Daten als Artefakte paketieren\n\nNachdem ihr Build erfolgreich war und Ihre Tests bestanden wurden, sollten Sie die resultierenden Java Pakete als Buildartefakt hochladen. Dies speichert die gebauten Pakete als Teil der Workflow-Ausführung und ermöglicht Dir, sie herunterzuladen. Artefakte können Dir helfen, Pull-Requests in deiner lokalen Umgebung zu testen und zu debuggen, bevor sie zusammengeführt werden („merge“). Weitere Informationen finden Sie unter [Speichern und Freigeben von Daten mit Workflowartefakten](/de/actions/using-workflows/storing-workflow-data-as-artifacts).\n\nMaven erstellt normalerweise Ausgabedateien wie JARs, EARs oder WARs im Verzeichnis `target`. Um diese als Artefakte hochzuladen, kannst du sie in ein neues Verzeichnis kopieren, welches Artefakte zum Hochladen enthält. Zum Beispiel kannst du ein Verzeichnis namens `staging` erstellen. Anschließend kannst du den Inhalt dieses Verzeichnisses mithilfe der Aktion `upload-artifact` hochladen.\n\n```yaml copy\nsteps:\n  - uses: actions/checkout@v6\n  - uses: actions/setup-java@v4\n    with:\n      java-version: '17'\n      distribution: 'temurin'\n  - run: mvn --batch-mode --update-snapshots verify\n  - run: mkdir staging && cp target/*.jar staging\n  - uses: actions/upload-artifact@v4\n    with:\n      name: Package\n      path: staging\n```"}