Azure DevOps パイプラインで Maven を使用して Java 17 をコンパイルする
Azure DevOps パイプラインで ubuntu-latest マシンを使用すると、現在、11 以降のバージョンはサポートされていません.そのため、Maven@3 タスクを使用して新しいバージョンを使用してコンパイルすることはできません.回避策は、コンテナー バージョンの Maven を使用することです.
では、なぜ環境変数
これはテンプレート ファイルから抽出されたもので、パラメーターを必要なものに置き換えます.
クレジット: sfragata の answer から github の問題が始まりました.その後、環境変数を使用して含まれているテンプレートを修正できるようになるまで、つまずきました.
jobs:
# build uberjar
- job: ${{ parameters.jobName }}
pool:
vmImage: ubuntu-latest
container: maven:3.8.1-openjdk-17-slim
variables:
- name: JAVA_HOME_11_X64
value: /usr/local/openjdk-17
steps:
- template: steps-prepare-maven.yml
- task: Maven@3
displayName: build ${{ parameters.moduleName }} uberJar
inputs:
mavenPomFile: pom.xml
mavenOptions: -Xmx3072m $(MavenOpts)
javaHomeSelection: 'path'
jdkDirectory: '/usr/local/openjdk-17'
publishJUnitResults: true
testResultsFiles: "**/surefire-reports/TEST-*.xml"
effectivePomSkip: true
goals: -P production -pl ${{ parameters.moduleName }} -am $(MavenOpts) -Dmaven.test.skip=${{ parameters.skipTests }} $(BuildGoal)
openjdk-17
を使用しており、明示的に javaHomeSelection
と jdkDirectory
を使用して、コンテナが JDK を置く場所と一致するように JAVA_HOME
を設定しています.では、なぜ環境変数
JAVA_HOME_11_X64
も定義しているのでしょうか?さて、コンテナ設定の外で使用される再利用可能なテンプレートがあります.たとえば、steps-prepare-maven.yml
ファイルは、プロジェクト シークレットを使用して settings.xml ファイルを作成し、ビルド パラメーターに基づいてリビジョンを更新するテンプレートです.Windows ジョブでも使用します.このような手順では、デフォルト バージョンの Java 11 が使用されます.コンテナー内で実行する場合、JAVA_HOME_11_X64 が優先され、再利用可能なテンプレートの Maven 手順が正しく機能します.これはテンプレート ファイルから抽出されたもので、パラメーターを必要なものに置き換えます.
クレジット: sfragata の answer から github の問題が始まりました.その後、環境変数を使用して含まれているテンプレートを修正できるようになるまで、つまずきました.
Reference
この問題について(Azure DevOps パイプラインで Maven を使用して Java 17 をコンパイルする), 我々は、より多くの情報をここで見つけました https://dev.to/jflamy/compiling-java-17-using-maven-in-an-azure-devops-pipeline-24cnテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol