2019-07-16 13:28:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# setup-java
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-12 15:12:48 -04: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-03-15 13:39:46 +03: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
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  V2 supports custom distributions and provides support for Zulu OpenJDK and Adopt OpenJDK 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 ](../README.md#Supported-distributions ) section for a list of available options.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Basic
  
						 
					
						
							
								
									
										
										
										
											2021-03-17 11:04:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								**Adopt OpenJDK**
							 
						 
					
						
							
								
									
										
										
										
											2019-07-17 10:56:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								```yaml
							 
						 
					
						
							
								
									
										
										
										
											2019-07-25 21:24:28 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								steps:
							 
						 
					
						
							
								
									
										
										
										
											2020-01-31 01:52:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  uses: actions/checkout@v2  
						 
					
						
							
								
									
										
										
										
											2021-03-15 13:39:46 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  uses: actions/setup-java@v2 -preview 
						 
					
						
							
								
									
										
										
										
											2019-07-17 10:56:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  with:
							 
						 
					
						
							
								
									
										
										
										
											2021-03-15 13:39:46 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    distribution: 'adopt' # See 'Supported distributions' for available options
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    java-version: '11'
							 
						 
					
						
							
								
									
										
										
										
											2019-07-17 10:56:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  run: java -cp java HelloWorldApp 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2020-05-02 04:33:15 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-17 11:04:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								**Zulu OpenJDK**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```yaml
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								steps:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  uses: actions/checkout@v2  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  uses: actions/setup-java@v2 -preview 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  with:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    distribution: 'zulu' # See 'Supported distributions' for available options
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    java-version: '11'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  run: java -cp java HelloWorldApp 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-15 13:39:46 +03: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 04:33:15 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-15 13:39:46 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								**Note:** 4-digit notation will always force action to skip checking pre-cached versions and download version in runtime.
							 
						 
					
						
							
								
									
										
										
										
											2020-01-09 00:45:37 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-15 13:39:46 +03: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/ ) |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| `adopt`  | Adopt OpenJDK | [Link ](https://adoptopenjdk.net/ ) | [Link ](https://adoptopenjdk.net/about.html )
							 
						 
					
						
							
								
									
										
										
										
											2020-05-02 04:33:15 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-15 13:39:46 +03: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.
							 
						 
					
						
							
								
									
										
										
										
											2019-07-17 10:56:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-15 13:39:46 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								#### Testing against different Java versions
  
						 
					
						
							
								
									
										
										
										
											2019-07-17 10:56:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								```yaml
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								jobs:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  build:
							 
						 
					
						
							
								
									
										
										
										
											2021-03-15 13:39:46 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    runs-on: ubuntu-20.04
							 
						 
					
						
							
								
									
										
										
										
											2019-07-17 10:56:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    strategy:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      matrix:
							 
						 
					
						
							
								
									
										
										
										
											2021-03-15 13:39:46 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        java: [ '8', '11', '13', '15' ]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    name: Java ${{ matrix.Java }} sample
							 
						 
					
						
							
								
									
										
										
										
											2019-07-25 21:24:28 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    steps:
							 
						 
					
						
							
								
									
										
										
										
											2020-01-31 01:52:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      -  uses: actions/checkout@v2 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-17 10:56:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      -  name: Setup java
							 
						 
					
						
							
								
									
										
										
										
											2021-03-15 13:39:46 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        uses: actions/setup-java@v2 -preview
							 
						 
					
						
							
								
									
										
										
										
											2019-07-17 10:56:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        with:
							 
						 
					
						
							
								
									
										
										
										
											2021-03-15 13:39:46 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          distribution: '< distribution > '
							 
						 
					
						
							
								
									
										
										
										
											2019-08-13 16:24:39 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          java-version: ${{ matrix.java }}
							 
						 
					
						
							
								
									
										
										
										
											2019-07-17 10:56:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      -  run: java -cp java HelloWorldApp
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-15 13:39:46 +03: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 ) 
						 
					
						
							
								
									
										
										
										
											2019-12-10 09:37:07 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-15 13:39:46 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								## License
  
						 
					
						
							
								
									
										
										
										
											2019-07-17 10:56:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The scripts and documentation in this project are released under the [MIT License ](LICENSE )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-15 13:39:46 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								## Contributions
  
						 
					
						
							
								
									
										
										
										
											2019-07-17 10:56:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Contributions are welcome!  See [Contributor's Guide ](docs/contributors.md )