Maven: ошибка: generics не поддерживаются в -source 1.3, я использую 1.6
Я импортировал существующий проект Maven в Eclipse IDE.
Я изменил код в нем, он скомпилирован успешно,
Я использую Java 1.6 как компилятор
и когда я пытаюсь запустить maven clean install -X
Он дает следующую ошибку
не удалось выполнить синтаксический анализ сообщения об ошибке: (используйте опции-источник 5 или более поздней версии, чтобы включить генерики)
D:\bayer\util\src\main\java\com\tata\bayer\util\BrokerageCalendar.java: 179: ошибка: generics не поддерживаются в источнике 1.3
private static Hashtable<String, Boolean> nyseHolidays = new Hashtable<String, Boolean>();
^
could not parse error message: (use -source 5 or higher to enable generics)
D:\bayer\util\src\main\java\com\tata\bayer\util\APIHttpXmlClient.java:27: error: generics are not supported in -source 1.3
Class<? extends APIResponse> responseClass) {
^
Пожалуйста, предложите любые идеи, как решить эту проблему.
Ответы
Ответ 1
Вы заявили, что хотите использовать java 1.6 в своем проекте pom.xml?:
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<compilerArgument></compilerArgument>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
Ответ 2
Настройка плагина Maven Compiler устранит проблему. Оказывается, проблема была вызвана пакетом Maven3 в репозитории Ubuntu. Альтернативное исправление - загрузить Maven 3 с веб-сайта Apache, который использует более современный плагин компилятора.
Я хотел знать, почему это происходит, когда в документации указано, что исходный Java-источник равен 1.5. Чтобы узнать, что mvn использует для вашего плагина компилятора, используйте:
mvn help:effective-pom
My Maven Compiler Plugin был 2.0.2, хотя я использовал Maven 3.0.4 из пакетов Ubuntu.
Когда я запускаю ту же команду, используя Maven 3.0.4 от Apache, у меня есть версия 2.3.2 плагина, которая по умолчанию соответствует Java 1.5, как ожидалось.
Ответ 3
Вам нужно настроить Maven Compiler Plugin.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
Ответ 4
Другой способ, который не требует модификации pom, - указать источник и цель в командной строке:
mvn clean install -Dmaven.compiler.source=1.6 -Dmaven.compiler.target=1.6
Обратите внимание, что этого следует избегать в целом, так как невозможно гарантировать, что сборка будет повторяться таким образом.
Ответ 5
Я бы предпочел это:
<properties>
<maven.compiler.source>1.5</maven.compiler.source>
<maven.compiler.target>1.5</maven.compiler.target>
...