Как Eclipse применяет конфигурацию пакета Expose к сборке Maven?

#eclipse #maven

#eclipse #maven

Вопрос:

Как Eclipse распространяет Java 11 «Expose Package …» на цель Maven?

Я предоставляю модуль Java 11 для ВСЕХ НЕНАЗВАННЫХ, используя Eclipse: Свойства -> Путь сборки Java -> Зависимости модуля -> Пакет Expose…

Ничего не добавляется к pom.xml с этой конфигурацией проект все же успешно создается.

Используя Eclipse 2020-06, maven 3.6.3 от m2e, maven-compiler-plugin 3.8.1 (это единственное явное переопределение в pom.xml ). Остальное — это «ВСТРОЕННЫЙ» maven.

Когда я смотрю на консоль Maven и эффективный pom, я не вижу никаких добавленных compilerArgs (—add-exports …). Когда я запускаю mvn из командной строки, я получаю сбой компилятора, как и ожидалось.

Как m2e распространяет —add-exports на javac, не отображая его в help:effective-pom target или Maven console?

В Eclipse, когда я нажимаю «Показать параметры JPMS …», отображается «—add-exports …», но нигде в выводе отладки m2e это не отображается.

Ответ №1:

Допустим, я хочу использовать внутренний API jdk.javadoc / jdk.javadoc.internal.tool, add compilerArgs должен работать:

 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version>
                <configuration>
                    <source>17</source>
                    <target>17</target>
                    <compilerArgs>
                        <fork>true</fork>
                        <arg>--add-exports</arg>
                        <arg>jdk.javadoc/jdk.javadoc.internal.tool=ALL-UNNAMED</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
  

‘fork’ должно быть true.