2019-07-17 01:28:00 +08:00
# setup-java
2019-08-13 03:12:48 +08:00
< p align = "left" >
< a href = "https://github.com/actions/setup-java" > < img alt = "GitHub Actions status" src = "https://github.com/actions/setup-java/workflows/Main%20workflow/badge.svg" > < / a >
< / p >
2021-04-05 18:02:27 +08:00
This action provides the following functionality for GitHub Actions runners:
- Downloading and setting up a requested version of Java. See [Usage ](#Usage ) for a list of supported distributions
- Extracting and caching custom version of Java from a local file
- Configuring runner for publishing using Apache Maven
- Configuring runner for publishing using Gradle
- Configuring runner for using GPG private key
- Registering problem matchers for error output
## V2 vs V1
2021-08-06 18:12:36 +08:00
- V2 supports custom distributions and provides support for Zulu OpenJDK, Adopt OpenJDK and Eclipse Temurin out of the box. V1 supports only Zulu OpenJDK
2021-04-05 18:02:27 +08:00
- V2 requires you to specify distribution along with the version. V1 defaults to Zulu OpenJDK, only version input is required. Follow [the migration guide ](docs/switching-to-v2.md ) to switch from V1 to V2
## Usage
2021-04-05 22:59:08 +08:00
Inputs `java-version` and `distribution` are mandatory. See [Supported distributions ](#supported-distributions ) section for a list of available options.
2021-04-05 18:02:27 +08:00
### Basic
**Adopt OpenJDK**
2019-07-17 22:56:53 +08:00
```yaml
2019-07-26 09:24:28 +08:00
steps:
2020-01-31 08:52:07 +08:00
- uses: actions/checkout@v2
2021-04-05 18:14:38 +08:00
- uses: actions/setup-java@v2
2019-07-17 22:56:53 +08:00
with:
2021-04-05 18:02:27 +08:00
distribution: 'adopt' # See 'Supported distributions' for available options
java-version: '11'
2019-07-17 22:56:53 +08:00
- run: java -cp java HelloWorldApp
```
2020-05-02 19:33:15 +08:00
2021-08-06 18:12:36 +08:00
**Eclipse Temurin**
```yaml
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v2
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '8'
- run: java -cp java HelloWorldApp
```
2021-04-05 18:02:27 +08:00
**Zulu OpenJDK**
```yaml
steps:
- uses: actions/checkout@v2
2021-04-05 18:14:38 +08:00
- uses: actions/setup-java@v2
2021-04-05 18:02:27 +08:00
with:
distribution: 'zulu' # See 'Supported distributions' for available options
java-version: '11'
- run: java -cp java HelloWorldApp
```
2020-05-02 19:33:15 +08:00
2021-04-05 18:02:27 +08:00
#### Supported version syntax
The `java-version` input supports an exact version or a version range using [SemVer ](https://semver.org/ ) notation:
- major versions: `8` , `11` , `15`
- more specific versions: `11.0` , `11.0.4` , `8.0.232` , `8.0.282+8`
- early access (EA) versions: `15-ea` , `15.0.0-ea` , `15.0.0-ea.2` , `15.0.0+2-ea`
2020-05-02 19:33:15 +08:00
2021-04-05 18:02:27 +08:00
#### Supported distributions
Currently, the following distributions are supported:
| Keyword | Distribution | Official site | License |
|-|-|-|-|
| `zulu` | Zulu OpenJDK | [Link ](https://www.azul.com/downloads/zulu-community/?package=jdk ) | [Link ](https://www.azul.com/products/zulu-and-zulu-enterprise/zulu-terms-of-use/ ) |
2021-05-17 21:33:21 +08:00
| `adopt` or `adopt-hotspot` | Adopt OpenJDK Hotspot | [Link ](https://adoptopenjdk.net/ ) | [Link ](https://adoptopenjdk.net/about.html )
| `adopt-openj9` | Adopt OpenJDK OpenJ9 | [Link ](https://adoptopenjdk.net/ ) | [Link ](https://adoptopenjdk.net/about.html )
2021-08-06 18:12:36 +08:00
| `temurin` | Eclipse Temurin | [Link ](https://adoptium.net/ ) | [Link ](https://adoptium.net/about.html )
2020-05-02 19:33:15 +08:00
2021-04-05 18:02:27 +08:00
**NOTE:** The different distributors can provide discrepant list of available versions / supported configurations. Please refer to the official documentation to see the list of supported versions.
2020-05-02 19:33:15 +08:00
2021-04-05 18:02:27 +08:00
### Check latest
In the basic examples above, the `check-latest` flag defaults to `false` . When set to `false` , the action tries to first resolve a version of Java from the local tool cache on the runner. If unable to find a specific version in the cache, the action will download a version of Java. Use the default or set `check-latest` to `false` if you prefer a faster more consistent setup experience that prioritizes trying to use the cached versions at the expense of newer versions sometimes being available for download.
2020-01-09 16:45:37 +08:00
2021-04-05 18:02:27 +08:00
If `check-latest` is set to `true` , the action first checks if the cached version is the latest one. If the locally cached version is not the most up-to-date, the latest version of Java will be downloaded. Set `check-latest` to `true` if you want the most up-to-date version of Java to always be used. Setting `check-latest` to `true` has performance implications as downloading versions of Java is slower than using cached versions.
2020-05-02 19:33:15 +08:00
2021-04-05 18:02:27 +08:00
For Java distributions that are not cached on Hosted images, `check-latest` always behaves as `true` and downloads Java on-flight. Check out [Hosted Tool Cache ](docs/advanced-usage.md#Hosted-Tool-Cache ) for more details about pre-cached Java versions.
2020-01-09 16:45:37 +08:00
2019-07-17 22:56:53 +08:00
```yaml
2019-07-26 09:24:28 +08:00
steps:
2020-01-31 08:52:07 +08:00
- uses: actions/checkout@v2
2021-04-05 18:14:38 +08:00
- uses: actions/setup-java@v2
2019-07-17 22:56:53 +08:00
with:
2021-04-05 18:02:27 +08:00
distribution: 'adopt'
java-version: '11'
check-latest: true
2019-07-17 22:56:53 +08:00
- run: java -cp java HelloWorldApp
```
2021-04-05 18:02:27 +08:00
### Testing against different Java versions
2019-07-17 22:56:53 +08:00
```yaml
jobs:
build:
2021-04-05 18:02:27 +08:00
runs-on: ubuntu-20.04
2019-07-17 22:56:53 +08:00
strategy:
matrix:
2021-04-05 18:02:27 +08:00
java: [ '8', '11', '13', '15' ]
name: Java ${{ matrix.Java }} sample
2019-07-26 09:24:28 +08:00
steps:
2020-01-31 08:52:07 +08:00
- uses: actions/checkout@v2
2019-07-17 22:56:53 +08:00
- name: Setup java
2021-04-05 18:14:38 +08:00
uses: actions/setup-java@v2
2019-07-17 22:56:53 +08:00
with:
2021-04-05 18:02:27 +08:00
distribution: '< distribution > '
2019-08-14 04:24:39 +08:00
java-version: ${{ matrix.java }}
2019-07-17 22:56:53 +08:00
- run: java -cp java HelloWorldApp
```
2021-04-05 18:02:27 +08:00
### Advanced
- [Selecting a Java distribution ](docs/advanced-usage.md#Selecting-a-Java-distribution )
- [Adopt ](docs/advanced-usage.md#Adopt )
- [Zulu ](docs/advanced-usage.md#Zulu )
- [Installing custom Java package type ](docs/advanced-usage.md#Installing-custom-Java-package-type )
- [Installing custom Java architecture ](docs/advanced-usage.md#Installing-custom-Java-architecture )
- [Installing custom Java distribution from local file ](docs/advanced-usage.md#Installing-Java-from-local-file )
- [Testing against different Java distributions ](docs/advanced-usage.md#Testing-against-different-Java-distributions )
- [Testing against different platforms ](docs/advanced-usage.md#Testing-against-different-platforms )
- [Publishing using Apache Maven ](docs/advanced-usage.md#Publishing-using-Apache-Maven )
- [Publishing using Gradle ](docs/advanced-usage.md#Publishing-using-Gradle )
- [Hosted Tool Cache ](docs/advanced-usage.md#Hosted-Tool-Cache )
## License
2019-07-17 22:56:53 +08:00
2021-05-17 21:38:02 +08:00
The scripts and documentation in this project are released under the [MIT License ](LICENSE ).
2019-07-17 22:56:53 +08:00
2021-04-05 18:02:27 +08:00
## Contributions
2019-07-17 22:56:53 +08:00
2021-05-17 21:38:02 +08:00
Contributions are welcome! See [Contributor's Guide ](CONTRIBUTING.md )