Как передать -Xlint: устаревшее или -Xlint: не проверено Maven? - PullRequest
0 голосов
/ 16 мая 2019

Когда я строю свой проект, я получаю ошибки вроде:

[INFO] SomeClass.java: Some input files use or override a deprecated API.
[INFO] SomeClass.java: Recompile with -Xlint:deprecation for details.
[INFO] SomeClass.java: Some input files use unchecked or unsafe operations.
[INFO] SomeClass.java: Recompile with -Xlint:unchecked for details.

Но когда я ставлю -Xlint:deprecation или -Xlint:unchecked в мои MAVEN_OPTS или .mvn/maven.config, я получаю:

$ MAVEN_OPTS="-Xlint:unchecked " mvn -B clean test 
Unrecognized option: -Xlint:unchecked
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Что дает?

1 Ответ

1 голос
/ 16 мая 2019

-Xlint - это опция компилятора, а не maven или jvm.

В командной строке maven принимает -Xlint, но обрабатывает его как параметр -X maven («отладка») и игнорирует остальные. Так что это не имеет ожидаемого эффекта.

В конкретном случае этих двух параметров компилятора вы можете установить свойства Maven, которые приведут к заданию желаемых параметров компилятора. Поместите их в .mvn/maven.config, MAVEN_OPTS env var или в командную строку вашего проекта:

-Dmaven.compiler.showWarnings=true
-Dmaven.compiler.showDeprecation=true

См. Плагин компилятора maven .

Вы также можете использовать свойство compilerArgs в своем pom.xml или пользовательском профиле Maven settings.xml. Я не вижу способа установить это свойство со значением List в качестве системного свойства. Вы также не можете использовать compilerArgument или compilerArguments, они не имеют пользовательских свойств .

Вы также можете найти полезным управлять уровнем журналирования компилятора; например, вы можете отключить эти предупреждения с помощью:

-Dorg.slf4j.simpleLogger.log.org.apache.maven.plugin.compiler.CompilerMojo=warn

Обратите внимание, что явная настройка -Dmaven.compiler.showWarnings=false будет , а не подавлять сообщения -Xlint. См. Как я могу подавить предупреждения javac об устаревшем API? . Maven, похоже, не предлагает способ установки соответствующих свойств -Xlint:-deprecated -Xlint:-unchecked в командной строке. Вы не можете установить их напрямую settings.xml, потому что вы не можете установить отдельные свойства плагина. Это должно быть pom.xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...