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>
2019-07-17 10:56:53 -04:00
This action sets up a java environment for use in actions by:
2019-11-02 21:39:35 -07:00
- optionally downloading and caching a requested version of java by version and adding to PATH. Default downloads are populated from the [Zulu Community distribution of OpenJDK ](http://static.azul.com/zulu/bin/ )
2019-07-17 10:56:53 -04:00
- registering problem matchers for error output
# Usage
See [action.yml ](action.yml )
2019-12-10 09:37:07 -08:00
## Basic
2019-07-17 10:56:53 -04:00
``` yaml
2019-07-25 21:24:28 -04:00
steps :
2019-11-08 16:40:52 +00:00
- uses : actions/checkout@v1
2019-08-01 09:40:31 -04:00
- uses : actions/setup-java@v1
2019-07-17 10:56:53 -04:00
with :
2019-11-22 16:26:10 -05:00
java-version : '9.0.4' # The JDK version to make available on the path. Takes a whole or semver JDK version, or 1.x syntax (e.g. 1.8 => Jdk 8.x). To specify a specific version for JDK 8 or older use the following pattern (8.0.x)
java-package : jdk # (jre, jdk, or jdk+fx) - defaults to jdk
architecture : x64 # (x64 or x86) - defaults to x64
2019-07-17 10:56:53 -04:00
- run : java -cp java HelloWorldApp
```
2019-12-10 09:37:07 -08:00
## Local file
2019-07-17 10:56:53 -04:00
``` yaml
2019-07-25 21:24:28 -04:00
steps :
2019-11-08 16:40:52 +00:00
- uses : actions/checkout@v1
2019-08-01 09:40:31 -04:00
- uses : actions/setup-java@v1
2019-07-17 10:56:53 -04:00
with :
2019-08-13 16:24:39 -04:00
java-version : '4.0.0'
2019-07-17 10:56:53 -04:00
architecture : x64
2019-11-02 21:39:35 -07:00
jdkFile : <path to jdkFile> # Optional - jdkFile to install java from. Useful for versions not found on Zulu Community CDN
2019-07-17 10:56:53 -04:00
- run : java -cp java HelloWorldApp
```
2019-12-10 09:37:07 -08:00
## Matrix Testing
2019-07-17 10:56:53 -04:00
``` yaml
jobs :
build :
2019-08-01 11:06:31 -04:00
runs-on : ubuntu-16.04
2019-07-17 10:56:53 -04:00
strategy :
matrix :
2019-11-02 21:39:35 -07:00
# test against latest update of each major Java version, as well as specific updates of LTS versions:
java : [ 1.6 , 6.0 .83 , 7 , 7.0 .181 , 8 , 8.0 .192 , 9.0 , x, 10, 11.0.x, 11.0.3, 12, 13 ]
2019-07-17 10:56:53 -04:00
name : Java ${{ matrix.java }} sample
2019-07-25 21:24:28 -04:00
steps :
2019-07-23 15:46:09 -04:00
- uses : actions/checkout@master
2019-07-17 10:56:53 -04:00
- name : Setup java
2019-08-01 09:40:31 -04:00
uses : actions/setup-java@v1
2019-07-17 10:56:53 -04:00
with :
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
```
2019-12-10 09:37:07 -08:00
## Publishing using Apache Maven
2019-11-28 14:13:35 -08:00
``` yaml
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v1
- name : Set up JDK 1.8
2019-12-04 23:22:47 -05:00
uses : actions/setup-java@v1
2019-11-28 14:13:35 -08:00
with :
java-version : 1.8
2019-12-19 11:28:11 -08:00
env :
GITHUB_TOKEN : ${{ github.token }}
2019-12-19 08:52:26 -08:00
2019-11-28 14:13:35 -08:00
- name : Build with Maven
run : mvn -B package --file pom.xml
2019-12-19 08:52:26 -08:00
2019-11-28 14:13:35 -08:00
- name : Publish to GitHub Packages Apache Maven
run : mvn deploy
2019-12-19 08:52:26 -08:00
2019-11-29 09:26:29 -08:00
- name : Set up Apache Maven Central
2019-12-04 23:22:47 -05:00
uses : actions/setup-java@v1
2019-11-29 09:26:29 -08:00
with : # running setup-java again overwrites the settings.xml
java-version : 1.8
2019-12-19 11:28:11 -08:00
server-id : maven # Value of the distributionManagement/repository/id field of the pom.xml
server-username : MAVEN_USERNAME # env variable for username below
server-password : MAVEN_CENTRAL_TOKEN # env variable for token below
env :
MAVEN_CENTRAL_TOKEN : ${{ secrets.MAVEN_CENTRAL_TOKEN }}
MAVEN_USERNAME : maven_username123
2019-12-19 08:52:26 -08:00
2019-11-29 09:26:29 -08:00
- name : Publish to Apache Maven Central
run : mvn deploy
2019-11-28 14:13:35 -08:00
```
2019-12-06 14:50:30 -05:00
2019-12-19 08:52:26 -08:00
* * *NOTE: The `settings.xml` file is created in the Actions $HOME directory. If you have an existing `settings.xml` file at that location, it will be overwritten. See below for using the `settings-path` to change your `settings.xml` file location.***
2019-12-06 14:50:30 -05:00
2019-11-28 14:52:51 -08:00
See the help docs on [Publishing a Package ](https://help.github.com/en/github/managing-packages-with-github-packages/configuring-apache-maven-for-use-with-github-packages#publishing-a-package ) for more information on the `pom.xml` file.
2019-11-28 14:13:35 -08:00
2019-12-10 09:37:07 -08:00
## Publishing using Gradle
2019-12-06 16:21:27 -05:00
``` yaml
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v1
- name : Set up JDK 1.8
uses : actions/setup-java@v1
- name : Build with Gradle
run : gradle build
- name : Publish to GitHub Packages
run : gradle publish
env :
USERNAME : ${{ github.actor }}
PASSWORD : ${{ secrets.GITHUB_TOKEN }}
```
2019-12-19 08:52:26 -08:00
* * *NOTE: The `USERNAME` and `PASSWORD` need to correspond to the credentials environment variables used in the publishing section of your `build.gradle` .***
2019-12-06 16:21:27 -05:00
See the help docs on [Publishing a Package with Gradle ](https://help.github.com/en/github/managing-packages-with-github-packages/configuring-gradle-for-use-with-github-packages#example-using-gradle-groovy-for-a-single-package-in-a-repository ) for more information on the `build.gradle` configuration file.
2019-12-10 14:25:15 -08:00
## Apache Maven with a settings path
2019-12-10 09:37:07 -08:00
2019-12-10 13:02:21 -08:00
When using an Actions self-hosted runner with multiple shared runners the default `$HOME` directory can be shared by a number runners at the same time which could overwrite existing settings file. Setting the `settings-path` variable allows you to choose a unique location for your settings file.
2019-12-10 09:37:07 -08:00
``` yaml
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v1
- name : Set up JDK 1.8 for Shared Runner
uses : actions/setup-java@v1
with :
java-version : 1.8
server-id : github # Value of the distributionManagement/repository/id field of the pom.xml
2019-12-10 14:25:15 -08:00
settings-path : ${{ github.workspace }} # location for the settings.xml file
2019-12-19 11:28:11 -08:00
env :
GITHUB_TOKEN : ${{ github.token }}
2019-12-19 08:52:26 -08:00
2019-12-10 09:37:07 -08:00
- name : Build with Maven
run : mvn -B package --file pom.xml
2019-12-19 08:52:26 -08:00
2019-12-10 09:37:07 -08:00
- name : Publish to GitHub Packages Apache Maven
2019-12-10 14:25:15 -08:00
run : mvn deploy -s $GITHUB_WORKSPACE/settings.xml
2019-12-10 09:37:07 -08:00
```
2019-07-17 10:56:53 -04:00
# License
The scripts and documentation in this project are released under the [MIT License ](LICENSE )
# Contributions
Contributions are welcome! See [Contributor's Guide ](docs/contributors.md )