![](/img/trans.png)
[英]How to upgrade java version on an Azure pipeline Microsoft-hosted agent?
[英]Azure DevOps Pipeline for Java Project with self hosted agent
我們有一組使用不同 JDK 版本開發的 Java 項目,項目中使用了不同版本的 Gradle 和 Maven。
我們應該使用Self Hosted Agent
創建 Azure DevOps 管道,並且到目前為止,構建代理服務器已安裝 JDK 11。
如何創建管道來處理如此多樣化的項目? 我們是否需要在 Self Hosted Agent 或其他更好的方式中安裝多個 JDK 版本?
是的,如果您想使用 Self Hosted Agent,您需要安裝多個 JDK 版本。 更好的方法是使用 Microsoft 托管代理,因為它預裝了一些版本的 JDK。 可以參考Build environment和Build using multiple versions的文檔。
更新:
這是我的帶有自托管代理的 Gradle 示例:
1.使用java工具安裝任務:
steps:
- task: JavaToolInstaller@0
inputs:
versionSpec: '11'
jdkArchitectureOption: 'x64'
jdkSourceOption: 'LocalDirectory'
jdkFile: 'C:\jdk-11.0.10.zip'
cleanDestinationDirectory: false
- task: Gradle@2
inputs:
gradleWrapperFile: 'gradlew'
tasks: 'build'
publishJUnitResults: false
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.11'
gradleOptions: '-Xmx3072m'
sonarQubeRunAnalysis: false
- task: JavaToolInstaller@0
inputs:
versionSpec: '8'
jdkArchitectureOption: 'x64'
jdkSourceOption: 'LocalDirectory'
jdkFile: 'C:\jdk1.8.0_281.zip'
cleanDestinationDirectory: false
- task: Gradle@2
inputs:
gradleWrapperFile: 'gradlew'
tasks: 'build'
publishJUnitResults: false
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.11'
gradleOptions: '-Xmx3072m'
sonarQubeRunAnalysis: false
java工具安裝任務的JDK文件:
當 jdkSourceOption == LocalDirectory 時適用。 指定包含壓縮 JDK 的 jdk 歸檔文件的路徑。 該路徑可以在您的源存儲庫中或代理上的本地路徑中。 該文件應該是一個存檔(.zip、.tar.gz、.7z),包含根級別或單個目錄中的 bin 文件夾。
2.直接使用gradle任務:
steps:
- task: Gradle@2
inputs:
gradleWrapperFile: 'gradlew'
tasks: 'build'
publishJUnitResults: false
javaHomeOption: 'Path'
jdkDirectory: 'C:\Program Files\Java\jdk-11.0.10'
gradleOptions: '-Xmx3072m'
sonarQubeRunAnalysis: false
- task: Gradle@2
inputs:
gradleWrapperFile: 'gradlew'
tasks: 'build'
publishJUnitResults: false
javaHomeOption: 'Path'
jdkDirectory: 'C:\Program Files\Java\jdk1.8.0_281'
gradleOptions: '-Xmx3072m'
sonarQubeRunAnalysis: false
另一個答案要求 JDK 二進制文件存在於某個位置。 在它缺席的情況下:
- task: BASH@3
displayName: 'install-java8'
inputs:
targetType: 'inline'
script: |
rm -rf /opt/jdk
mkdir /opt/jdk
wget https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_x64_linux_hotspot_8u322b06.tar.gz
tar -zxf OpenJDK8U-jdk_x64_linux_hotspot_8u322b06.tar.gz -C /opt/jdk
export PATH=$PWD/jdk8u322-b06/bin:$PATH
update-alternatives --install /usr/bin/java java /opt/jdk/jdk8u322-b06/bin/java 100 && \
update-alternatives --install /usr/bin/javac javac /opt/jdk/jdk8u322-b06/bin/javac 100 && \
update-alternatives --install /usr/bin/jar jar /opt/jdk/jdk8u322-b06/bin/jar 100 && \
echo 'export JAVA_HOME=/opt/jdk/jdk8u322-b06/' >> /etc/profile.d/java.sh
java -version
- task: BASH@3
displayName: 'verify java8 installation'
inputs:
targetType: 'inline'
script: |
source /etc/profile.d/java.sh
java -version
echo $JAVA_HOME
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.