Рубрики
Без рубрики

Мавен toolchains.xml Сценарий

Apache Maven представил цепочки инструментов Maven, чтобы упростить настройку подключаемых модулей и избежать их указания… Помеченный maven, java, bash.

Apache Maven представил цепочки инструментов Maven, чтобы упростить настройку плагинов и избежать указания какого-либо местоположения JDK в POM проекта. Доступные JDK настраиваются в ${HOME}/.m2/toolchains.xml . В этой статье представлен сценарий для автоматизации генерации toolchains.xml файл, В этой статье представлен сценарий для автоматизации генерации toolchains.xml

В этой статье представлен сценарий для автоматизации генерации || toolchains.xml || файл, || toolchains.xml.bash || . Теория работы

В этой статье представлен сценарий для автоматизации генерации toolchains.xml файл, toolchains.xml.bash . Теория работы



  ...
  
    jdk
    
      VERSION
      VENDOR
    
    
      JDKHOMEDIR
    
  
  ...

Для каждого JDKHOME DIR кандидата ВЕРСИЯ указывается системным свойством JVM java.specification.version и согласованное имя поставщика указывается в java.vendor . Эта простая Java-программа (совместимая с Java 1.5 и более поздними версиями) предоставит шаблон. (Каталог JDK должен быть указан в качестве аргумента командной строки.)

public class ToolchainEntry {
    public static void main(String[] argv) {
        System.out
            .format("  \n")
            .format("    jdk\n")
            .format("    \n")
            .format("      %s\n",
                    System.getProperty("java.specification.version"))
            .format("      %s\n",
                    System.getProperty("java.vendor"))
            .format("    \n")
            .format("    \n")
            .format("      %s\n", argv[0])
            .format("    \n")
            .format("  \n");
    }
}

Эта программа объединена со скриптом bash в следующем разделе.

Скрипт

Скрипт bash используется для управления выполнением Java-программы, описанной в предыдущем разделе, с обязанностями по:

  1. Определите подходящие каталоги JVM:
    • Mac OS X (Darwin): /Библиотека/Java/JavaVirtualMachines/*.jdk/Содержимое/Главная страница
    • Linux: /usr/lib/jvm/*jdk*
  2. Создать Toolchain.java и скомпилировать в Toolchain.class 1
  3. Создайте новый документ и выполните итерацию по каждому каталогу JDK-кандидата, выполнив Toolchain.class с кандидатом JVM
#!/bin/bash

shopt -s nullglob
JDKS+=({/Library/Java/JavaVirtualMachines/*.jdk/Contents/Home,/usr/lib/jvm/*jdk*})

cat > ToolchainEntry.java <\n")
            .format("    jdk\n")
            .format("    \n")
            .format("      %s\n",
                    System.getProperty("java.specification.version"))
            .format("      %s\n",
                    System.getProperty("java.vendor"))
            .format("    \n")
            .format("    \n")
            .format("      %s\n", argv[0])
            .format("    \n")
            .format("  \n");
    }
}
EOF

javac -Xlint:none -source 1.7 -target 1.7 ToolchainEntry.java

echo '' > toolchains.xml
echo '' >> toolchains.xml

for jdk in ${JDKS[@]}; do
    if [ -d ${jdk} ]; then
        java=${jdk}/bin/java

        if [ -x ${java} ]; then
            ${java} ToolchainEntry ${jdk} >> toolchains.xml
        fi
    fi
done

echo '' >> toolchains.xml

rm -rf ToolchainEntry.*

Выход

Сгенерированный пример toolchains.xml файлы для Mac OS X и Linux (Облачная оболочка Google) приведены ниже.



  
    jdk
    
      10
      AdoptOpenJDK
    
    
      /Library/Java/JavaVirtualMachines/adoptopenjdk-10.jdk/Contents/Home
    
  
  
    jdk
    
      11
      AdoptOpenJDK
    
    
      /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
    
  
  
    jdk
    
      12
      AdoptOpenJDK
    
    
      /Library/Java/JavaVirtualMachines/adoptopenjdk-12.jdk/Contents/Home
    
  
  
    jdk
    
      1.8
      AdoptOpenJDK
    
    
      /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
    
  
  
    jdk
    
      9
      Oracle Corporation
    
    
      /Library/Java/JavaVirtualMachines/adoptopenjdk-9.jdk/Contents/Home
    
  
  
    jdk
    
      11
      Amazon.com Inc.
    
    
      /Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home
    
  
  
    jdk
    
      12
      Oracle Corporation
    
    
      /Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home
    
  
  
    jdk
    
      1.7
      Oracle Corporation
    
    
      /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
    
  
  
    jdk
    
      1.8
      Oracle Corporation
    
    
      /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home
    
  
  
    jdk
    
      1.8
      Oracle Corporation
    
    
      /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
    
  



  
    jdk
    
      11
      Debian
    
    
      /usr/lib/jvm/java-1.11.0-openjdk-amd64
    
  
  
    jdk
    
      11
      Debian
    
    
      /usr/lib/jvm/java-11-openjdk-amd64
    
  
  
    jdk
    
      1.8
      Oracle Corporation
    
    
      /usr/lib/jvm/java-1.8.0-openjdk-amd64
    
  
  
    jdk
    
      1.8
      Oracle Corporation
    
    
      /usr/lib/jvm/java-8-openjdk-amd64
    
  

[1] Несмотря на то, что самая ранняя версия Java, поддерживаемая исходным кодом Java, составляет 1.5, самый ранний код, который может создать Oracle JDK 12, предназначен для 1.7. ↩

Оригинал: “https://dev.to/allenball/maven-toolchains-xml-script-2lkm”