#maven
#maven
Вопрос:
Я импортировал существующий проект Maven в Eclipse IDE . Я изменил в нем некоторый код, он успешно скомпилирован, я использую Java 1.6 в качестве компилятора, и когда я пытаюсь запустить maven clean install -X
Выдает следующую ошибку
не удалось проанализировать сообщение об ошибке: (используйте -source 5 или выше, чтобы включить дженерики) D:bayerutilsrcmainjavacomtatabayerutilBrokerageCalendar.java:179 : ошибка: дженерики не поддерживаются в исходном коде 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:bayerutilsrcmainjavacomtatabayerutilAPIHttpXmlClient.java:27: error: generics are not supported in -source 1.3
Class<? extends APIResponse> responseClass) {
^
Пожалуйста, предложите какие-либо идеи о том, как это решить??
Комментарии:
1. Какую версию Maven вы используете и правильно ли вы настроили JAVA_HOME
Ответ №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>
Комментарии:
1. @AndreiBodnarescu для вас. Конечное имя не имеет значения для этой проблемы.
2. мы сделали так: <profile> <id>1.6</id> <build> <плагины> <плагин> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId><конфигурация> <jdkLevel>1.6</jdkLevel> <source>1.6</source> <target>1.6</ target> <compilerArgument>1.6</compilerArgument> </ configuration</ plugin> </ plugins> </build> Мы используем Java 1.7 и maven как Apache Maven 2.2.1 (r801777; 2009-08-07 00:46:01 0530) Java home: c:SoftwaresJavajdk1.7.0jre
Ответ №2:
Настройка плагина компилятора Maven решит проблему. Оказывается, проблема была вызвана пакетом Maven3 в репозитории Ubuntu. Альтернативным решением является загрузка Maven 3 с веб-сайта Apache, который использует более современный плагин компилятора.
Я хотел знать, почему это происходит, когда в документации указано, что исходный код Java по умолчанию равен 1.5. Чтобы узнать, что mvn использует для вашего плагина компилятора, используйте:
mvn help:effective-pom
Мой плагин компилятора Maven был 2.0.2, хотя я использовал Maven 3.0.4 из пакетов Ubuntu.
Когда я запускаю ту же команду, используя Maven 3.0.4 из Apache, у меня есть плагин версии 2.3.2, который по умолчанию использует Java 1.5, как и ожидалось.
Комментарии:
1. Это тоже было проблемой для меня при использовании пакета Maven, поставляемого из Ubuntu. Установка из Apache, как было предложено, и проблема была решена.
Ответ №3:
Вы должны настроить плагин компилятора Maven.
<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>
Комментарии:
1. стоит отметить, что значение по умолчанию равно 1.5 для плагина компилятора> = 2.3. В Maven 2.2.1 по умолчанию используется плагин компилятора 2.0.2, но вы можете переопределить его, как описано.
2. (кстати, в версии примера есть опечатка, но вы не можете вносить изменения из 1 символа в stackoverflow 🙂
Ответ №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>
...