Maven-(マルチ)モジュールをパッケージ化したいのですが、親POMには次のものが含まれています:
<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です。
johannes@luna:~/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 version 1.7。mvn package
を呼び出すと、エラーが発生します(ダイヤモンド演算子を有効にするには-source 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>
これはmaven 2.2.1では動作しない可能性がありますが、Maven 3.0.4では、pomのプロパティに2つのプロパティを追加するだけでJava 7が有効になります。
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
mark Petersによる、jdk 1.7とmaven 2.2.1の互換性の問題に関する完璧な説明 Maven "エラーメッセージを解析できませんでした"(Java 7 + Maven 2)