英文:
Github action: setup-java with multiple JDKs and corresponding environment variables
问题
背景:
我有一个使用反应式驱动程序用于Cassandra的Spring Boot 2.3项目,构建于Java 11之上。然而,对于集成测试,当我启动嵌入式Cassandra数据库时,我依赖于机器上存在Java 8,并伴随有环境变量JAVA8_HOME。
问题:
我如何配置GitHub操作 setup-java 来为我的构建使用多个JDK,并使JAVA_HOME指向Java 11,但JAVA8_HOME指向Java 8?
英文:
Background:
I've a spring-boot 2.3 project using reactive driver for cassandra that is built on Java 11. For integration test though, when I spin up an embedded Cassandra database, I rely on presence of Java 8 on the machine with accompanying environment variable JAVA8_HOME.
Question:
How can I configure GitHub action setup-java to utilise multiple JDKs for my build and let JAVA_HOME point to Java 11 but JAVA8_HOME point to Java8?
答案1
得分: 5
在GitHub Actions中,使用多个JDK是可以实现的。一个很好且整洁的方式是利用strategy.matrix
作业配置,就像在你的.github/workflows/maven.yml
中所示:
name: github
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
java-version: [ 8, 11, 15 ]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: ${{ matrix.java-version }}
- run: mvn -B install --no-transfer-progress --file pom.xml
我没有检查这是否包括你需要的JAVA_HOME
环境变量配置,但它明确地将构建环境隔离为不同的Java版本。这里有一个使用此设置的完整示例项目:https://github.com/codecentric/cxf-spring-boot-starter,以及一个绿色构建日志:https://github.com/codecentric/cxf-spring-boot-starter/actions/runs/468949251。
此外,GitHub Actions的矩阵构建GUI界面非常不错:
英文:
Using multiple JDKs with GitHub actions is already possible today. One great and neat way is to leverage the strategy.matrix job configuration like that in your .github/workflows/maven.yml
:
name: github
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
java-version: [ 8, 11, 15 ]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: ${{ matrix.java-version }}
- run: mvn -B install --no-transfer-progress --file pom.xml
I didn't check if this does include the environment variable configuration for JAVA_HOME
you need - but it clearly isolates the build environments for the separate Java versions. Here's a full example project using this setup: https://github.com/codecentric/cxf-spring-boot-starter and here's a green build log.
Also the GitHub actions GUI for matrix builds is quite nice:
答案2
得分: 2
不完全是 setup-java
,但你可以尝试另一个 java-install
操作:https://github.com/AdoptOpenJDK/install-jdk#multiple-jdks。使用 target
属性设置环境变量 JAVA_HOME
。
英文:
Not exactly setup-java, but you can try another java-install action: https://github.com/AdoptOpenJDK/install-jdk#multiple-jdks. Use target
property for setting up env var to use as JAVA_HOME
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论