Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
setup-java/README.md
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
130 lines (109 sloc)
6.01 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# setup-java | |
<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> | |
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 | |
- V2 supports custom distributions and provides support for Zulu OpenJDK, Adopt OpenJDK and Eclipse Temurin out of the box. V1 supports only Zulu OpenJDK | |
- 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 | |
Inputs `java-version` and `distribution` are mandatory. See [Supported distributions](#supported-distributions) section for a list of available options. | |
### Basic | |
**Adopt OpenJDK** | |
```yaml | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-java@v2 | |
with: | |
distribution: 'adopt' # See 'Supported distributions' for available options | |
java-version: '11' | |
- run: java -cp java HelloWorldApp | |
``` | |
**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 | |
``` | |
**Zulu OpenJDK** | |
```yaml | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-java@v2 | |
with: | |
distribution: 'zulu' # See 'Supported distributions' for available options | |
java-version: '11' | |
- run: java -cp java HelloWorldApp | |
``` | |
#### 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` | |
#### 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/) | | |
| `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) | |
| `temurin` | Eclipse Temurin | [Link](https://adoptium.net/) | [Link](https://adoptium.net/about.html) | |
**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. | |
### 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. | |
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. | |
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. | |
```yaml | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-java@v2 | |
with: | |
distribution: 'adopt' | |
java-version: '11' | |
check-latest: true | |
- run: java -cp java HelloWorldApp | |
``` | |
### Testing against different Java versions | |
```yaml | |
jobs: | |
build: | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
java: [ '8', '11', '13', '15' ] | |
name: Java ${{ matrix.Java }} sample | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Setup java | |
uses: actions/setup-java@v2 | |
with: | |
distribution: '<distribution>' | |
java-version: ${{ matrix.java }} | |
- run: java -cp java HelloWorldApp | |
``` | |
### 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 | |
The scripts and documentation in this project are released under the [MIT License](LICENSE). | |
## Contributions | |
Contributions are welcome! See [Contributor's Guide](CONTRIBUTING.md) |