9

J2ME クライアントと EJB サーバーで使用する必要がある Maven モジュールがあります。クライアントではターゲット 1.1 用に、サーバーではターゲット 1.6 用にコンパイルする必要があります。

また、1.6 バージョンを Nexus リポジトリにデプロイする必要があるため、サーバー プロジェクトで作業しているメンバーは、ソース コードをダウンロードしなくてもこの依存関係を含めることができます。

http://java.dzone.com/articles/maven-profile-best-practicesで、プロファイルを使用することはこれを行う最善の方法ではないことを読みましたが、著者は何が最善の方法であるかを言いませんでした。

ここに私のpom.xmlがあります:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>proj-parent</artifactId>
        <groupId>br.com.comp.proj</groupId>
        <version>0.0.4-SNAPSHOT</version>
    </parent>

    <artifactId>proj-cryptolib</artifactId>
    <name>proj - Cryto Lib</name>

    <dependencies>
        <dependency>
            <groupId>br.com.comp</groupId>
            <artifactId>comp-proj-mobile-messages</artifactId>
            <version>0.0.2-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <build>

        <plugins>

            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.3</source>
                    <target>1.1</target>
                    <fork>true</fork>
                </configuration>
            </plugin>

        </plugins>

    </build>

</project>
4

3 に答える 3

4

これは、Mavenコンパイラプラグインを介して構成できます。

Mavenコンパイラプラグインのドキュメントをご覧ください。

たとえば、さまざまなプロファイルを介してこれを有効にすることができます。

異なるターゲットバージョンのみが必要な場合は、単純に可変ターゲットを使用できます。このようなもの:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.3</source>
        <target>${TARGET_VERSION}</target>
        <fork>true</fork>
    </configuration>
 </plugin>
于 2012-06-06T18:42:12.190 に答える
2

あなたが詳細を要求したので、私のコメントをwjansの答えに補足するために。

次の例では、コンパイラ プラグインを2 回実行して 2 つの異なるクラスファイル セットを生成しclassifierます。

おおよそ、次のようなものです。

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.5</version>
    <executions>
      <execution>
        <configuration>
          <source>1.3</source>
          <target>1.5</target>
          <fork>true</fork>
          <classifier>jdk5</classifier>
        </configuration>
      </execution>
      <execution>
        <configuration>
          <source>1.3</source>
          <target>1.6</target>
          <fork>true</fork>
          <classifier>jdk6</classifier>
        </configuration>
      </execution>
    </executions>
 </plugin>

classifiers を使用するのと同じように、 sを使用することに眉をひそめる人が時々いることに注意してprofilesください。これは、プロジェクトが複数のプロジェクトで非難されるべきである、またはビルドの移植性が損なわれていることを意味する可能性があるためです。

于 2012-06-07T09:58:29.330 に答える