1

私の 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

両方の環境でコンパイルする方法を知っていますか?

4

1 に答える 1

0

正直に言うと、同じ Maven プロジェクトから 2 つの Maven jar を作成するべきではありません。その背後には、ここで読める理由があります。

同じ記事では、必要に応じて、まだ実行できる 2 つの方法についても説明しています。

    Using profiles
    By doing two executions of maven jar plugin

SOでこの質問を参照することもできます。

さらに、プロジェクトに2つのpomファイルを使用しても問題がない場合は、2つのpomファイルを使用することで同じことを達成できます。このようなもので、それらを別々にビルドします。

  pom-jdk6.xml
  pom-jdk7.xml
于 2013-08-14T15:01:21.917 に答える