{"meta":{"title":"Создание и тестирование Java с Maven","intro":"Узнайте, как создать рабочий процесс непрерывной интеграции (CI) в GitHub Actions, чтобы создать и протестировать свой Java-проект с Maven.","product":"GitHub Actions","breadcrumbs":[{"href":"/ru/actions","title":"GitHub Actions"},{"href":"/ru/actions/tutorials","title":"Учебники"},{"href":"/ru/actions/tutorials/build-and-test-code","title":"Сборка и тестирование кода"},{"href":"/ru/actions/tutorials/build-and-test-code/java-with-maven","title":"Java с Maven"}],"documentType":"article"},"body":"# Создание и тестирование Java с Maven\n\nУзнайте, как создать рабочий процесс непрерывной интеграции (CI) в GitHub Actions, чтобы создать и протестировать свой Java-проект с Maven.\n\n## Введение\n\nВ этом руководстве показано, как создать рабочий процесс с непрерывной интеграцией (CI) для вашего Java-проекта с помощью инструмента управления проектами Maven. Создаваемый рабочий процесс позволит увидеть, когда фиксации в запросе на вытягивание вызывают сбои в сборке или тестировании ветви по умолчанию; этот подход поможет убедиться, что ваш код всегда работоспособен. Рабочий процесс CI можно расширить для кэширования файлов и отправки артефактов из запуска рабочего процесса.\n\nGitHub размещённые раннеры имеют кэш инструментов с предустановленным программным обеспечением, включающим Java Development Kits (JDK) и Maven. Список программного обеспечения и предварительно установленных версий JDK и Maven см. в разделе [Средства выполнения тестов, размещенные в GitHub](/ru/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software).\n\n## Необходимые компоненты\n\nТребуются знания YAML и синтаксиса GitHub Actions. Дополнительные сведения см. в разделе:\n\n* [Синтаксис рабочего процесса для GitHub Actions](/ru/actions/using-workflows/workflow-syntax-for-github-actions)\n* [Написание рабочих процессов](/ru/actions/learn-github-actions)\n\nРекомендуем иметь базовое понимание Java и фреймворка Maven. Дополнительные сведения см. в [руководстве по началу работы с Maven](https://maven.apache.org/guides/getting-started/index.html) в документации Maven.\n\n## Использование шаблона рабочего процесса Maven\n\nЧтобы быстро приступить к работе, добавьте шаблон рабочего процесса в `.github/workflows` каталог репозитория.\n\nGitHub предоставляет шаблон рабочего процесса для Maven, который должен работать для большинства Java проектов Maven. В последующих разделах этого руководства приведены примеры настройки этого шаблона рабочего процесса.\n\n1. На GitHubперейдите на главную страницу репозитория.\n   данных repositories.repositories.actions-tab %} 1. Если в вашем репозитории уже используется рабочий процесс, нажмите кнопку **Создать рабочий процесс**.\n\n2. На странице \"Выбор рабочего процесса\" показан выбор рекомендуемых шаблонов рабочих процессов. Поискайте «Java с Maven».\n\n3. В рабочем процессе «Java с Maven» нажмите **Configure**.\n\n4. Измените рабочий процесс по мере необходимости. Например, измените версию Java.\n\n5. Щелкните **Зафиксировать изменения**.\n\nФайл `maven.yml` рабочего процесса добавляется в `.github/workflows` каталог репозитория.\n\n### Указание версии и архитектуры Java\n\nШаблон рабочего процесса настраивает `PATH` содержащий OpenJDK 8 для платформы x64. Если вы хотите использовать другую версию Java или выбрать другую архитектуру (`x64` или `x86`), можно использовать действие `setup-java` для выбора другой среды выполнения Java.\n\nНапример, чтобы использовать JDK версии 11, предоставляемой Adoptium для платформы x64, можно выполнить действие `setup-java` и установить параметры `java-version`,`distribution` и `architecture` на `'11'`, `'temurin'` и `x64`.\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\nДополнительные сведения см. в описании действия [`setup-java`](https://github.com/actions/setup-java).\n\n## Создание и тестирование кода\n\nВы можете использовать те же команды, которые используются для создания и тестирования кода в локальной среде.\n\nШаблон рабочего процесса будет запускать целевой `package` объект по умолчанию. В конфигурации Maven по умолчанию эта команда скачивает зависимости, выполняет сборку классов, проводит тесты и упаковывает классы в распространяемый формат, например в JAR-файл.\n\nЕсли вы используете другие команды для сборки проекта или хотите выполнить другой целевой объект, это можно указать. Например, может потребоваться запустить целевой объект, настроенный `verify``pom-ci.xml` в файле.\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## Кэширование зависимостей\n\nВы можете кэшировать зависимости, чтобы ускорить выполнение рабочего процесса. После успешного выполнения локальный репозиторий Maven будет храниться в кэше. При последующих запусках рабочего процесса данные из кэша восстанавливаются, так что зависимости не нужно скачивать из удаленных репозиториев Maven. Кэшировать зависимости можно просто с помощью [действия `setup-java`](https://github.com/marketplace/actions/setup-java-jdk), либо можно использовать [действие `cache`](https://github.com/actions/cache) для более сложной настройки.\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\nЭтот рабочий процесс сохраняет содержимое локального репозитория Maven, расположенного в каталоге `.m2` домашнего каталога средства выполнения. Ключ кэша будет хэшированного содержимого `pom.xml`, поэтому изменения, которые `pom.xml` будут недействительными для кэша.\n\n## Упаковка данных рабочего процесса в виде артефактов\n\nПосле успешной работы сборки и прохождения тестов, возможно, стоит загрузить полученные пакеты Java как артефакт сборки. Полученные пакеты будут храниться как часть выполнения рабочего процесса и их можно будет скачать. Артефакты помогут вам протестировать и отладить запросы на вытягивание в локальной среде до их слияния. Дополнительные сведения см. в разделе [Хранение и предоставление общего доступа к данным с артефактами рабочего процесса](/ru/actions/using-workflows/storing-workflow-data-as-artifacts).\n\nКак правило, Maven создает выходные файлы, такие как JAR, EAR или WAR, в каталоге `target`. Чтобы передать их как артефакты, их можно скопировать в новый каталог, содержащий артефакты для отправки. Например, можно создать каталог с именем `staging`. Затем содержимое этого каталога можно передать с помощью действия `upload-artifact`.\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```"}