Maven / Gradle установить переменную среды для компиляции? - PullRequest
0 голосов
/ 12 ноября 2018

Я разработал процессор аннотаций, который может потребовать artifactId проекта для генерации файла. Я использую переменную окружения (GRAPHDEP_USAGE) для получения значения.

Я могу установить переменную окружения из оболочки перед запуском Maven / Gradle, но я бы хотел, чтобы инструмент сборки вместо меня установил переменную среды перед компиляцией:

  • Для Maven внутри pom.xml я хотел бы заполнить переменную среды GRAPHDEP_PROJECT содержимым ${artifactId}, прежде чем запускать цель compile.
  • Для Gradle , внутри build.gradle я хотел бы заполнить переменную среды GRAPHDEP_PROJECT содержимым project.name, прежде чем запускать задачу compileJava.

Я попробовал несколько вариантов без успеха. Любая идея, как я могу это сделать?

1 Ответ

0 голосов
/ 13 ноября 2018

Точно не отвечая на вопрос, но фактически отвечая на вопрос, который заключался в том, как передавать аргументы обработчикам аннотаций.


Аргументы компилятора можно указывать с помощью флага -A.

В Gradle :

compileJava.options.compilerArgs += "-Agraphdep.project=${project.name}"

В Maven :

<compilerArgs>
  <arg>-Agraphdep.project=${project.artifactId}</arg>
</compilerArgs>

Тогда из реализации AbstractProcessor можнополучить аргументы, используя:

processingEnv.getOptions().get("widget");

Поддерживаемые параметры должны быть объявлены процессором либо с помощью аннотации @SupportedOptions({"widget"}), либо путем переопределения метода public Set<String> getSupportedOptions().

...