# Ant を使用したJavaの構築とテスト

GitHub Actionsで継続的インテグレーション (CI) ワークフローを作成し、Ant を使用してJava プロジェクトをビルドしてテストする方法について説明します。

## はじめに

このガイドでは、Ant ビルド システムを使用して、Java プロジェクトの継続的インテグレーション (CI) を実行するワークフローを作成する方法について説明します。 作成するワークフローによって、プルリクエストに対するコミットがデフォルトブランチに対してビルドあるいはテストの失敗を引き起こしたことを見ることができるようになります。このアプローチは、コードが常に健全であることを保証するための役に立ちます。 CIワークフローを拡張して、ワークフローの実行による成果物をアップロードするようにもできます。

GitHub がホストするランナーには、Java Development Kits (JDK) 及び Ant を含むプリインストールされたソフトウェアを備えたツール キャッシュがあります。 JDK と Ant に関するソフトウェアとプレインストールされたバージョンの一覧については、「[GitHub ホステッド ランナー](/ja/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software)」を参照してください。

## 前提条件

YAMLとGitHub Actionsの構文に馴染んでいる必要があります。 詳細については、以下を参照してください:

* [GitHub Actions　のワークフロー構文](/ja/actions/using-workflows/workflow-syntax-for-github-actions)
* [ワークフローの書き込み](/ja/actions/learn-github-actions)

Javaと Ant フレームワークの基本的な理解をお勧めします。 詳細については、[Apache Ant マニュアル](https://ant.apache.org/manual/)を参照してください。

## Ant ワークフロー テンプレートの使用

すぐに開始するには、リポジトリの `.github/workflows` ディレクトリにワークフロー テンプレートを追加します。

GitHub には、Ant プロジェクトを使用するほとんどのJavaで動作する必要がある Ant のワークフロー テンプレートが用意されています。 このガイドの以降のセクションでは、このワークフロー テンプレートをカスタマイズする方法の例を示します。

1. GitHub で、リポジトリのメイン ページに移動します。

2. リポジトリ名の下にある **\[<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]** をクリックします。

   !["github/docs" リポジトリのタブのスクリーンショット。 \[アクション\] タブがオレンジ色の枠線で強調表示されています。](/assets/images/help/repository/actions-tab-global-nav-update.png)

3. ワークフローが既にリポジトリ内にある場合は、 **\[新しいワークフロー]** をクリックします。

4. \[ワークフローの選択] ページには、推奨されるワークフロー テンプレートの選択が表示されます。 "Ant でJava" を検索します。

5. "Ant を使用したJava" ワークフローで、**Configure** をクリックします。

6. 必要に応じてワークフローを編集します。 たとえば、Javaバージョンを変更します。

7. ```
          **[Commit changes]** をクリックします。
   ```

`ant.yml` ワークフロー ファイルが使用中リポジトリの `.github/workflows` ディレクトリに追加されます。

### Javaのバージョンとアーキテクチャの指定

ワークフロー テンプレートで x64 プラットフォーム用の OpenJDK 8 を含むように `PATH` を設定します。 異なるバージョンの Java を使用する場合、あるいは異なるアーキテクチャ (`x64` または `x86`) をターゲットとする場合、`setup-java` アクションを使って異なる Java ランタイム環境を選択できます。

たとえば、x64 プラットフォームに対して Adoptium によって提供される JDK のバージョン 11 を使用するには、`setup-java` アクションを使用して、`java-version`、`distribution`、`architecture` パラメーターを `'11'`、`'temurin'`、`x64` に設定します。

```yaml copy
steps:
  - uses: actions/checkout@v6
  - name: Set up JDK 11 for x64
    uses: actions/setup-java@v4
    with:
      java-version: '11'
      distribution: 'temurin'
      architecture: x64
```

詳細については、「[`setup-java`](https://github.com/actions/setup-java) アクション」を参照してください。

## コードのビルドとテスト

ローカルで使うのと同じコマンドを、コードのビルドとテストに使えます。

このワークフロー テンプレートは、`build.xml` ファイルで指定された既定のターゲットを実行します。 デフォルトのターゲットは、一般的にクラスをビルドし、テストを実行し、たとえばJARファイルのような配布可能なフォーマットにクラスをパッケージするように設定されるでしょう。

プロジェクトのビルドに異なるコマンドを使ったり、異なるターゲットを実行したいのであれば、それらを指定できます。 たとえば、`jar` ファイルで構成されている `build-ci.xml` ターゲットを実行できます。

```yaml copy
steps:
  - uses: actions/checkout@v6
  - uses: actions/setup-java@v4
    with:
      java-version: '17'
      distribution: 'temurin'
  - name: Run the Ant jar target
    run: ant -noinput -buildfile build-ci.xml jar
```

## 成果物としてのワークフローのデータのパッケージ化

ビルドが成功し、テストが成功したら、結果のJava パッケージをビルド成果物としてアップロードできます。 そうすれば、ビルドされたパッケージをワークフローの実行の一部として保存することになり、それらをダウンロードできるようになります。 アーティファクトを利用して、Pull Requestをマージする前にローカル環境でテストとデバッグを行うことができます。 詳しくは、「[ワークフロー成果物を使ったデータの格納と共有](/ja/actions/using-workflows/storing-workflow-data-as-artifacts)」をご覧ください。

Ant では、通常、JAR、EAR、WAR のような出力ファイルが `build/jar` ディレクトリに作成されます。
`upload-artifact` アクションを使用して、そのディレクトリの内容をアップロードできます。

```yaml copy
steps:
  - uses: actions/checkout@v6
  - uses: actions/setup-java@v4
    with:
      java-version: '17'
      distribution: 'temurin'

  - run: ant -noinput -buildfile build.xml
  - uses: actions/upload-artifact@v4
    with:
      name: Package
      path: build/jar
```