簡體   English   中英

如何在 Azure 管道 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 版本。 您可以在軟件部分找到 Java 的可用預安裝版本:

在此處輸入圖像描述

我認為您的腳本無法以某種方式在托管計算機上運行。 而且,您指定的 JDK 版本不在您的主機上。 我建議您根據上表設置您的主機(根據安裝的預定義 JDK)。

因此,可以利用其他兩個選項:

這是從 Linux 上的本地目錄獲取存檔文件的示例。 該文件應該是JAVA_HOME目錄的存檔文件( .zip.gz ),以便它包含binlibincludejre等目錄。

 - 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 ),以便它包含binlibincludejre等目錄。

- 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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM