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(" \n"); } }jdk \n") .format("\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("
Эта программа объединена со скриптом bash
в следующем разделе.
Скрипт
Скрипт bash
используется для управления выполнением Java-программы, описанной в предыдущем разделе, с обязанностями по:
- Определите подходящие каталоги JVM:
- Mac OS X (Darwin):
/Библиотека/Java/JavaVirtualMachines/*.jdk/Содержимое/Главная страница
- Linux:
/usr/lib/jvm/*jdk*
- Mac OS X (Darwin):
- Создать
Toolchain.java
и скомпилировать вToolchain.class
1 - Создайте новый
документ и выполните итерацию по каждому каталогу 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(" \n") .format("%s \n", System.getProperty("java.specification.version")) .format("%s \n", System.getProperty("java.vendor")) .format("\n") .format(" \n") .format(" \n"); } } EOF javac -Xlint:none -source 1.7 -target 1.7 ToolchainEntry.java echo '' > toolchains.xml echo '%s \n", argv[0]) .format("' >> 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”