J'essaie de créer une application Java Maven et d'exécuter des tests sur une base de données Postgres.

Cependant, l'application Java utilise JDK 13 et l'agent hébergé Azure ubuntu n'a pas cette valeur par défaut installée. En tant que tel, j'utilise la tâche de script pour l'installer, puis je l'utilise lors de la construction de Maven.

Cependant, j'ai essayé plusieurs configurations et, dans l'ensemble, Maven n'arrête pas de se plaindre qu'il ne trouve aucun JDK 13 installé.

La dernière configuration que j'ai essayée est répertoriée ci-dessous, dans laquelle je l'installe via un script, puis j'utilise la tâche JavaToolInstaller pour la rendre disponible (en m'assurant que Java_home est défini et que le java peut être trouvé dans le chemin. J'obtiens alors l'erreur

##[error]Java 13 is not preinstalled on this agent

Je l'ai également essayé sans la tâche JavaToolInstaller, puis j'ai exporté JAVA_HOME et modifié le PATH dans le script, mais Maven se plaint qu'il ne trouve pas JDK 13 ...

S'il vous plaît un peu d'aide comment utiliser JDK 13 sur un agent ubuntu pendant la construction de maven?

Extrait de code Azure pipeline:

    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
1
edbras 11 mars 2021 à 01:05

2 réponses

Meilleure réponse

Le problème était que je pointais vers le mauvais répertoire installé. L'emplacement ci-dessus de JAVA_HOME que j'ai trouvé sur Internet, après avoir sorti le contenu de l'arborescence de / usrl / lib / jvm, je l'ai changé et ajouté cela à la section variable et maven a trouvé le jdk et l'utilise 😊

JAVA_HOME_13_X64 : "/usr/lib/jvm/java-13-openjdk-amd64"
0
edbras 12 mars 2021 à 22:43

La fonction «préinstallée» vous permet d'utiliser des versions de Java préinstallées sur l'agent hébergé par Microsoft. Vous pouvez trouver les versions préinstallées de Java disponibles dans Section du logiciel:

enter image description here

Je pense que votre script ne fonctionne pas d'une manière ou d'une autre sur la machine hébergée. Et la version JDK que vous spécifiez n'est pas présente sur votre machine hôte. Je vous suggère de configurer votre machine hôte selon le tableau ci-dessus (selon le JDK prédéfini installé).

Par conséquent, les deux autres options peuvent être exploitées:

Voici un exemple d'obtention du fichier d'archive à partir d'un répertoire local sous Linux. Le fichier doit être une archive (.zip, .gz) du répertoire JAVA_HOME de manière à inclure bin, lib, include, Répertoires jre, etc.

 - 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

Voici un exemple de téléchargement du fichier d'archive à partir du stockage Azure. Le fichier doit être une archive (.zip, .gz) du répertoire JAVA_HOME de manière à inclure bin, lib, include, Répertoires jre, etc.

- 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

Faites-moi savoir si cela répond à votre question.

1
singhh-msft 11 mars 2021 à 17:57