如何在 Azure-pipeline Ubuntu 代理上安装 java 13 并在 Maven 构建期间使用它?
How to install java 13 on Azure-pipeline Ubuntu agent and use it during Maven build?
我正在尝试构建 Java Maven 应用程序和 运行 针对 Postgres 数据库的一些测试。
但是,java 应用程序使用 JDK 13,而 Azure 托管代理 ubuntu 没有安装此默认值。因此,我使用脚本任务来安装它,然后在 Maven 构建期间使用它。
但是,我尝试了几个配置,但总的来说,Maven 一直抱怨找不到任何 JDK 13 安装。
我尝试的最后一个配置如下所列,我在其中通过脚本安装它,然后使用 JavaToolInstaller 任务使其可用(确保 Java_home 已设置并且 java 可以在路径中找到。
然后我得到错误
##[error]Java 13 is not preinstalled on this agent
我也尝试过不带 JavaToolInstaller 任务,然后导出 JAVA_HOME 并修改脚本中的 PATH,但后来 Maven 抱怨找不到 JDK 13.. .
请帮助如何在 Maven 构建期间在 ubuntu 代理上使用 JDK 13?
Azure 管道片段:
variables:
MAVEN_CACHE_FOLDER: $(Pipeline.Workspace)/.m2/repository
MAVEN_OPTS: "-Dmaven.repo.local=$(MAVEN_CACHE_FOLDER)"
JAVA_HOME : "/usr/lib/jvm/openjdk-13-jdk"
PATH: $(JAVA_HOME)/bin:$(PATH)
service_name: backend
mygetUsername: myUserName
mygetPassword: myPassword
resources:
containers:
- container: postgres
image: postgres:11.6-alpine
ports:
- 5432:5432
env:
POSTGRES_DB: default
POSTGRES_USER: default
POSTGRES_PASSWORD: default
POSTGRES_HOST_AUTH_METHOD: trust
stages:
- stage: create_artifact
displayName: Create artifact
jobs:
- job: build
displayName: Build, test and publish artifact
services:
postgres: postgres
steps:
- script: |
sudo apt-get install openjdk-13-jdk
displayName: Installing JDK 13
- task: JavaToolInstaller@0
displayName: Using JDK 13
inputs:
versionSpec: "13"
jdkArchitectureOption: x64
jdkSourceOption: "PreInstalled"
- task: Cache@2
displayName: Cache Maven local repo
inputs:
key: 'maven | "$(Agent.OS)" | backend/pom.xml'
restoreKeys: |
maven | "$(Agent.OS)"
maven
path: $(MAVEN_CACHE_FOLDER)
- task: Maven@3
name: maven_package
displayName: Maven package
inputs:
goals: "package"
mavenPomFile: "backend/pom.xml"
options: '--settings backend/.mvn/settings.xml -DmygetUsername=$(mygetUsername) -DmygetPassword=$(mygetPassword)'
mavenOptions: "-Xmx3072m $(MAVEN_OPTS)"
javaHomeOption: "JDKVersion"
jdkVersionOption: "1.13"
mavenAuthenticateFeed: true
“预安装”功能允许您使用预安装在 Microsoft 托管代理上的 Java 版本。您可以在 Software section:
中找到可用的 Java 预安装版本
我认为您的脚本无法在托管计算机上运行。而且,您指定的 JDK 版本不在您的主机上。我建议您按照上述 table 设置您的主机(按照预定义的 JDK 安装)。
因此,可以利用其他两个选项:
这是从 Linux 上的本地目录获取存档文件的示例。该文件应该是 JAVA_HOME
目录的存档 (.zip
、.gz
),以便它包含 bin
、lib
、include
、 jre
等目录
- task: JavaToolInstaller@0
inputs:
versionSpec: "11"
jdkArchitectureOption: x64
jdkSourceOption: LocalDirectory
jdkFile: "/builds/openjdk-11.0.2_linux-x64_bin.tar.gz"
jdkDestinationDirectory: "/builds/binaries/externals"
cleanDestinationDirectory: true
下面是从 Azure 存储下载存档文件的示例。该文件应该是 JAVA_HOME
目录的存档 (.zip
、.gz
),以便它包含 bin
、lib
、include
、 jre
等目录
- task: JavaToolInstaller@0
inputs:
versionSpec: '6'
jdkArchitectureOption: 'x64'
jdkSourceOption: AzureStorage
azureResourceManagerEndpoint: myARMServiceConnection
azureStorageAccountName: myAzureStorageAccountName
azureContainerName: myAzureStorageContainerName
azureCommonVirtualFile: 'jdk1.6.0_45.zip'
jdkDestinationDirectory: '$(agent.toolsDirectory)/jdk6'
cleanDestinationDirectory: false
问题是我指向了错误的安装目录。
我在互联网上找到的 JAVA_HOME 的上述位置,在输出 /usrl/lib/jvm 的树内容后,我更改了它并将其添加到变量部分,maven 找到了 jdk 并使用它
JAVA_HOME_13_X64 : "/usr/lib/jvm/java-13-openjdk-amd64"
我正在尝试构建 Java Maven 应用程序和 运行 针对 Postgres 数据库的一些测试。
但是,java 应用程序使用 JDK 13,而 Azure 托管代理 ubuntu 没有安装此默认值。因此,我使用脚本任务来安装它,然后在 Maven 构建期间使用它。
但是,我尝试了几个配置,但总的来说,Maven 一直抱怨找不到任何 JDK 13 安装。
我尝试的最后一个配置如下所列,我在其中通过脚本安装它,然后使用 JavaToolInstaller 任务使其可用(确保 Java_home 已设置并且 java 可以在路径中找到。 然后我得到错误
##[error]Java 13 is not preinstalled on this agent
我也尝试过不带 JavaToolInstaller 任务,然后导出 JAVA_HOME 并修改脚本中的 PATH,但后来 Maven 抱怨找不到 JDK 13.. .
请帮助如何在 Maven 构建期间在 ubuntu 代理上使用 JDK 13?
Azure 管道片段:
variables:
MAVEN_CACHE_FOLDER: $(Pipeline.Workspace)/.m2/repository
MAVEN_OPTS: "-Dmaven.repo.local=$(MAVEN_CACHE_FOLDER)"
JAVA_HOME : "/usr/lib/jvm/openjdk-13-jdk"
PATH: $(JAVA_HOME)/bin:$(PATH)
service_name: backend
mygetUsername: myUserName
mygetPassword: myPassword
resources:
containers:
- container: postgres
image: postgres:11.6-alpine
ports:
- 5432:5432
env:
POSTGRES_DB: default
POSTGRES_USER: default
POSTGRES_PASSWORD: default
POSTGRES_HOST_AUTH_METHOD: trust
stages:
- stage: create_artifact
displayName: Create artifact
jobs:
- job: build
displayName: Build, test and publish artifact
services:
postgres: postgres
steps:
- script: |
sudo apt-get install openjdk-13-jdk
displayName: Installing JDK 13
- task: JavaToolInstaller@0
displayName: Using JDK 13
inputs:
versionSpec: "13"
jdkArchitectureOption: x64
jdkSourceOption: "PreInstalled"
- task: Cache@2
displayName: Cache Maven local repo
inputs:
key: 'maven | "$(Agent.OS)" | backend/pom.xml'
restoreKeys: |
maven | "$(Agent.OS)"
maven
path: $(MAVEN_CACHE_FOLDER)
- task: Maven@3
name: maven_package
displayName: Maven package
inputs:
goals: "package"
mavenPomFile: "backend/pom.xml"
options: '--settings backend/.mvn/settings.xml -DmygetUsername=$(mygetUsername) -DmygetPassword=$(mygetPassword)'
mavenOptions: "-Xmx3072m $(MAVEN_OPTS)"
javaHomeOption: "JDKVersion"
jdkVersionOption: "1.13"
mavenAuthenticateFeed: true
“预安装”功能允许您使用预安装在 Microsoft 托管代理上的 Java 版本。您可以在 Software section:
中找到可用的 Java 预安装版本我认为您的脚本无法在托管计算机上运行。而且,您指定的 JDK 版本不在您的主机上。我建议您按照上述 table 设置您的主机(按照预定义的 JDK 安装)。
因此,可以利用其他两个选项:
这是从 Linux 上的本地目录获取存档文件的示例。该文件应该是 JAVA_HOME
目录的存档 (.zip
、.gz
),以便它包含 bin
、lib
、include
、 jre
等目录
- task: JavaToolInstaller@0
inputs:
versionSpec: "11"
jdkArchitectureOption: x64
jdkSourceOption: LocalDirectory
jdkFile: "/builds/openjdk-11.0.2_linux-x64_bin.tar.gz"
jdkDestinationDirectory: "/builds/binaries/externals"
cleanDestinationDirectory: true
下面是从 Azure 存储下载存档文件的示例。该文件应该是 JAVA_HOME
目录的存档 (.zip
、.gz
),以便它包含 bin
、lib
、include
、 jre
等目录
- task: JavaToolInstaller@0
inputs:
versionSpec: '6'
jdkArchitectureOption: 'x64'
jdkSourceOption: AzureStorage
azureResourceManagerEndpoint: myARMServiceConnection
azureStorageAccountName: myAzureStorageAccountName
azureContainerName: myAzureStorageContainerName
azureCommonVirtualFile: 'jdk1.6.0_45.zip'
jdkDestinationDirectory: '$(agent.toolsDirectory)/jdk6'
cleanDestinationDirectory: false
问题是我指向了错误的安装目录。 我在互联网上找到的 JAVA_HOME 的上述位置,在输出 /usrl/lib/jvm 的树内容后,我更改了它并将其添加到变量部分,maven 找到了 jdk 并使用它
JAVA_HOME_13_X64 : "/usr/lib/jvm/java-13-openjdk-amd64"