Плагин компилятора Maven — отправка параметров в javac (classpath или cp)

#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 спасибо.