可以在Azure Pipeline Gradle任务中使用JDK 21吗?

xytpbqjk  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(131)

我的Azure管道包含以下任务

- task: Gradle@2
    displayName: 'Run checks and tests'
    inputs:
      javaHomeOption: 'JDKVersion'
      jdkVersionOption: '1.17'
      tasks: 'check jacocoTestCoverageVerification jacocoTestReport'

我想升级到JDK v21,但如果我用1.21替换1.17,我会得到以下错误:
错误:找不到指定的JDK版本。请确保在代理上安装了指定的JDK版本,并且环境变量“JAVA_HOME_21_X64”存在并设置为相应JDK的位置,或者使用Java工具安装任务安装所需的JDK。
我还尝试将Gradle@3jdkVersionOption: '1.21'一起使用,但失败并显示相同的错误消息

n9vozmp4

n9vozmp41#

我可以在Azure Pipeline中使用Java21时重现相同的问题。
问题的根本原因是Java 21没有预先安装在Pipeline代理中。
可以在Azure Pipeline Gradle任务中使用JDK 21吗?
答案是肯定的。我们可以在Gradle构建之前添加安装Java 21的步骤。
请参考以下YAML示例:

Windows代理:

steps:
- powershell: |
   $source = "https://download.oracle.com/java/21/latest/jdk-21_windows-x64_bin.zip"
   $destination = "$(build.sourcesdirectory)\jdk-21_windows-x64_bin.zip"
   $client = new-object System.Net.WebClient 
   $cookie = "oraclelicense=accept-securebackup-cookie"
   $client.Headers.Add([System.Net.HttpRequestHeader]::Cookie, $cookie) 
   $client.downloadFile($source, $destination)
  displayName: 'PowerShell Script'

- task: JavaToolInstaller@0
  displayName: 'Use Java 21'
  inputs:
    versionSpec: 21
    jdkArchitectureOption: x64
    jdkSourceOption: LocalDirectory
    jdkFile: '$(build.sourcesdirectory)\jdk-21_windows-x64_bin.zip'
    jdkDestinationDirectory: '$(agent.toolsDirectory)/jdk21'

- task: Gradle@2
  inputs:
    workingDirectory: ''
    gradleWrapperFile: 'gradlew'
    gradleOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.21'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    tasks: 'build'

Linux代理:

steps:
- bash: 'wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz '
  displayName: 'Bash Script'

- task: JavaToolInstaller@0
  displayName: 'Use Java 21'
  inputs:
    versionSpec: 21
    jdkArchitectureOption: x64
    jdkSourceOption: LocalDirectory
    jdkFile: '$(build.sourcesdirectory)/jdk-21_linux-x64_bin.tar.gz'
    jdkDestinationDirectory: '$(agent.toolsDirectory)/jdk21'

- task: Gradle@2
  inputs:
    workingDirectory: ''
    gradleWrapperFile: 'gradlew'
    gradleOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.21'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    tasks: 'build'

该脚本将下载Java 21官方网站。Pipeline任务:Java Installer以配置代理配置。

相关问题