mirror of
https://github.com/actions/setup-java.git
synced 2024-11-12 04:48:03 +00:00
08e4e813b8
* implement a core logic to cache dependnecies * integrate the cache logic to entry points * add a user doc about the dependency cache feature * reflect changes to the dist dir * add a prefix to the cache key https://github.com/actions/setup-java/pull/193/files#r669521434 * test: extract build.gradle to a file in __tests__ dir * run the restore e2e test on the specified OS * add an e2e test for maven * fix the dependency among workflows * stabilize the cache on the Windows in e2e test * add .gitignore files to __tests__/cache directories * try to run restore after the authentication * use the key in state to save caches in the post process * suggest users to run without daemon if fail to save Gradle cache on Windows * add missing description in the README.md * run clean-up tasks in serial * Add validation for post step (#3) * work on fixing cache post step * fix tests * Update src/cleanup-java.ts Co-authored-by: Konrad Pabjan <konradpabjan@github.com> * Update src/cache.ts Co-authored-by: Konrad Pabjan <konradpabjan@github.com> * style: put the name of input to the constants.ts * format: run `npm run build` to reflect changes to the dist dir * chore: update licensed files by `licensed cache` it still has three errors as follows: >* setup-java.npm.sax > filename: /Users/kengo/GitHub/setup-java/.licenses/npm/sax.dep.yml > - license needs review: other > >* setup-java.npm.tslib-1.14.1 > filename: /Users/kengo/GitHub/setup-java/.licenses/npm/tslib-1.14.1.dep.yml > - license needs review: 0bsd > >* setup-java.npm.tslib-2.3.0 > filename: /Users/kengo/GitHub/setup-java/.licenses/npm/tslib-2.3.0.dep.yml > - license needs review: 0bsd * fix: rerun ncc on macOS with node v12 * build: follow the suggestion at PR page https://github.com/actions/setup-java/pull/193#issuecomment-901839546 * fix: throw error in case of no package manager file found Co-authored-by: Dmitry Shibanov <dmitry-shibanov@github.com> Co-authored-by: Konrad Pabjan <konradpabjan@github.com>
146 lines
6.4 KiB
Markdown
146 lines
6.4 KiB
Markdown
# 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
|
|
- Caching dependencies managed by Apache Maven
|
|
- Caching dependencies managed by Gradle
|
|
|
|
## 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.
|
|
|
|
#### Supported cache types
|
|
Currently, `gradle` and `maven` are supported. You can set `cache` input like below:
|
|
```yaml
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-java@v2
|
|
with:
|
|
distribution: 'adopt'
|
|
java-version: '11'
|
|
cache: 'gradle' # will restore cache of dependencies and wrappers
|
|
- run: ./gradlew build
|
|
```
|
|
|
|
### 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)
|