#maven #maven-plugin #maven-compiler-plugin
#maven #maven-плагин #maven-compiler-плагин
Вопрос:
Можно ли отправлять аргументы в javac через плагин компилятора maven?
Я хочу установить три пути к классам в качестве аргумента для javac, но maven возвращает
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project wplex-frameworks: Compilation failure
[ERROR] javac: invalid flag: classpath=*:.
[ERROR] Usage: javac <options> <source files>
Код:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler.version}</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<fork>true</fork>
<executable>/usr/lib/jvm/java-8-openjdk-amd64/bin/javac</executable>
<compilerArgs>
<arg>classpath=*:.</arg>
<arg>-verbose</arg>
<arg>-Xlint:all,-options,-path</arg>
</compilerArgs>
<excludes>
<exclude>x/y/z/**</exclude>
</excludes>
</configuration>
</plugin>
До сих пор я пробовал classpath=:. , -classpath=:. , -classpath *:.
Остальные аргументы в порядке.
Комментарии:
1. Во-первых, почему вам нравится
classpath
выделять из этого classpath параметры, которые выглядят так:-classpath <class search path of directories and zip/jar files>
. Кроме того, почему вы определили абсолютный путь в своей конфигурации и почему не используете classpath, созданный Maven? Кроме этого, опция-options
не существует? Это также верно для-path
? и почему вам нравится что-то исключать?2. Абсолютный путь — это просто плохой минимальный пример. Для компиляции проекта мне нужно использовать очень специфический набор jar, расположенных в трех отдельных каталогах как classpath java 1.8. Причина исключения в том, что я переношу устаревший проект ant в maven, и есть некоторые вещи, которые мне нужно воспроизвести оттуда (на данный момент), одна из которых заключается в том, что конкретная компиляция не использует некоторые классы (возможно, проблемы с зависимостями, я не знаю).). Я не пробовал флаги -options и -path, но я думаю, что это не работает.
3. Что ж, я поступлю правильно и установлю локальные зависимости и использую тег <dependencies> . (Я был в темном месте, просто клонируя сборку ant в maven). Спасибо.
4. Может быть очень полезно установить репозиторий в вашей корпоративной среде и развернуть там необходимые артефакты…. таким образом, вы можете использовать его по всей сети…
5. Это именно то, что я сделаю: D спасибо.