私の Maven プロジェクトは、Java 6 と Java 7 の両方のプロジェクトで使用される jar です。したがって、次のように使用できるさまざまなアーティファクトが必要です。
<dependency>
<groupId>com.example</groupId>
<artifactId>example</artifactId>
<version>1.0</version>
<classifier>jdk6</classifier>
</dependency>
また、それらを 1 つのパスで構築したいと考えています。したがって、プロファイルはおそらく適切ではありません。複数のプラグイン実行を使用してみました。
まず、2 つの別個のビルド ディレクトリを作成します。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>createClassesDir</id>
<phase>process-resources</phase>
<configuration>
<tasks>
<mkdir dir="${project.build.outputDirectory}/jdk6" />
<mkdir dir="${project.build.outputDirectory}/jdk7" />
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
次に、2 つのディレクトリで 2 回ビルドするように maven-compiler-plugin を構成しようとします。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<executions>
<execution>
<id>jdk6</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<source>1.6</source>
<target>1.6</target>
<fork>true</fork>
<compilerArguments>
<d>${project.build.outputDirectory}/jdk6</d>
</compilerArguments>
</configuration>
</execution>
<execution>
<id>jdk7</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<source>1.7</source>
<target>1.7</target>
<fork>true</fork>
<compilerArguments>
<d>${project.build.outputDirectory}/jdk7</d>
</compilerArguments>
</configuration>
</execution>
</executions>
</plugin>
しかし、私はそれを機能させることができません。ソースファイルは既にコンパイルされているため、2 回目はコンパイルされません。
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ example ---
[INFO] Compiling 1 source file to [...]/example/target/classes
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (jdk6) @ example ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (jdk7) @ example ---
[INFO] Nothing to compile - all classes are up to date
両方の環境でコンパイルする方法を知っていますか?