2012-01-05 5 views
49

Я хочу, чтобы упаковать maven- (многоканальный) модуль, родительский POM включает в себя:Maven не использует Java 7

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
    <source>${maven.compiler.source}</source> 
    <target>${maven.compiler.target}</target> 
    <encoding>${project.build.sourceEncoding}</encoding> 
    </configuration> 
</plugin> 

Я использую Java 1.7 и свойства определяются следующим образом:

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <maven.compiler.source>1.7</maven.compiler.source> 
    <maven.compiler.target>1.7</maven.compiler.target> 
    <slf4j.version>1.6.1</slf4j.version> 
</properties> 

версия Maven является 2.2.1:

[email protected]:~/workspace/treetank/bundles/treetank-core$ mvn -version 
Apache Maven 2.2.1 (rdebian-6) 
Java version: 1.7.0 
Java home: /usr/lib/jvm/jdk1.7.0/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux" version: "3.0.0-14-generic" arch: "amd64" Family: "unix" 

Я понятия не имею, почему он не использует Java версии 1.7. При вызове mvn package я получаю сообщение об ошибке (например, с использованием источника 7 или выше для включения оператора бриллианта). Вы знаете, почему он пытается использовать 1.6?

Эффективная POM является:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <executions> 
     <execution> 
     <id>default-testCompile</id> 
     <phase>test-compile</phase> 
     <goals> 
      <goal>testCompile</goal> 
     </goals> 
     <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
      <encoding>UTF-8</encoding> 
     </configuration> 
     </execution> 
     <execution> 
     <id>default-compile</id> 
     <phase>compile</phase> 
     <goals> 
      <goal>compile</goal> 
     </goals> 
     <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
      <encoding>UTF-8</encoding> 
     </configuration> 
     </execution> 
    </executions> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
     <encoding>UTF-8</encoding> 
    </configuration> 
    </plugin> 
+0

Работает для меня на простом проекте maven на RHEL5. Текст ошибки, который я получаю при компиляции 1,7 источника с 1.6, также различен. «Оператор бриллианта не поддерживается в -Истории 1.6». – Raghuram

ответ

120

Это не может работать в Maven 2.2.1 , но с Maven 3.0.4 просто добавление двух свойств в свойства pom позволяет Java 7 для меня:

<properties> 
    <maven.compiler.source>1.7</maven.compiler.source> 
    <maven.compiler.target>1.7</maven.compiler.target> 
</properties> 
+2

. Мой проект компилировался отлично, но потом каким-то образом папка src была добавлена ​​в pom.xml, явно устанавливая эти два свойства для 1.6 только для этой конкретной папки, что затрудняет отслеживание. –

+1

Это не помогло :( – Pasha

+0

Не работает в затмении. – Wuaner

Смежные вопросы