[英]How to upgrade java version on an Azure pipeline Microsoft-hosted agent?
[英]How to you use a specific version of Java in Azure Devops Agent without downloading?
我正在嘗試使用 Maven 包裝器而不是 Maven 任務運行 Maven 。 但是,它失敗了,因為它使用的是舊版本的 Java。 JavaInstaller 任務似乎需要 JDK 的遠程源,我寧願避免這樣做並使用與 Maven 任務一起使用的源,但我在任何地方都找不到它的文檔。
您 現在還可以使用JavaToolInstaller
任務來激活預安裝的 Java 版本之一,例如
- task: JavaToolInstaller@0
inputs:
versionSpec: '11'
jdkArchitectureOption: 'x64'
jdkSourceOption: 'PreInstalled'
它還將設置JAVA_HOME
並預先添加PATH
,請參閱來源: https://github.com/microsoft/azure-pipelines-tasks/blob/46cca412451ac4418d6332114fca8ef8c3095de1/Tasks/JavaToolInstallerV0/javatoolinstaller.ts#L8
在為基於 Unix 的代理運行 Maven 之前添加以下script
- script: |
echo "##vso[task.setvariable variable=JAVA_HOME]$(JAVA_HOME_11_X64)"
echo "##vso[task.setvariable variable=PATH]$(JAVA_HOME_11_X64)/bin:$(PATH)"
displayName: "Set java version"
適用於基於 Windows 的代理
- script: |
echo "##vso[task.setvariable variable=JAVA_HOME]$(JAVA_HOME_11_X64)"
echo "##vso[task.setvariable variable=PATH]$(JAVA_HOME_11_X64)\bin;$(PATH)"
displayName: "Set java version"
這部分管道代碼顯示了如何選擇 JAVA_HOME 值: https://github.com/microsoft/azure-pipelines-tasks/blob/master/Tasks/Common/java-common/java-common.ts
可以通過 Linux 或 macOS 的任務的env
字段設置要使用的 Java 版本:
- script: |
java -version
env:
JAVA_HOME: $(JAVA_HOME_8_X64)
PATH: $(JAVA_HOME_8_X64)/bin:$(PATH)
對於 Windows,將 PATH 中的冒號更改為分號:
- script: |
java -version
env:
JAVA_HOME: $(JAVA_HOME_8_X64)
PATH: $(JAVA_HOME_8_X64)/bin;$(PATH)
Java 版本的替代品包括:
JAVA_HOME_7_X64
vs2017-win2016
, windows-2019
macos-10.14
, macos-10.15
ubuntu-16.04
, ubuntu-18.04
JAVA_HOME_8_X64
vs2017-win2016
, windows-2019
macos-10.14
, macos-10.15
ubuntu-16.04
、 ubuntu-18.04
、 ubuntu-20.04
JAVA_HOME_11_X64
vs2017-win2016
, windows-2019
macos-10.14
, macos-10.15
ubuntu-16.04
、 ubuntu-18.04
、 ubuntu-20.04
JAVA_HOME_12_X64
macos-10.14
, macos-10.15
ubuntu-16.04
, ubuntu-18.04
JAVA_HOME_13_X64
vs2017-win2016
, windows-2019
macos-10.14
, macos-10.15
JAVA_HOME_14_X64
macos-10.14
, macos-10.15
就像Martin Kreidenweis已經提到的那樣,可以使用JavaToolInstaller 。
但是,當在自托管代理上使用此功能時,需要在代理上安裝 Java,並且需要將所需的環境變量設置為指向安裝目錄。
JavaToolInstaller 使用從其配置派生的環境變量。 習俗:
JAVA_HOME_${versionSpec}_${jdkArchitectureOption}
我們可以在.env
文件中的代理主目錄中設置環境變量,如下所示:
JAVA_HOME_17_x64=/usr/lib/jvm/temurin-17-jdk-amd64
編輯.env
后,需要重新啟動代理以使環境變量可用於管道。 這可以通過(agent home)完成:
./svc.sh stop
./svc.sh start
請參閱Azure 文檔。
之后可以添加一個步驟,例如:
- task: JavaToolInstaller@0
inputs:
versionSpec: '17'
jdkArchitectureOption: 'x64'
jdkSourceOption: 'PreInstalled'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.