0

私は現在、プラットフォーム固有のプロファイル (Linux 32 ビット、Windows 64 ビットなど) を持つ pom を持っています。さらに、インボーカーのプラットフォームをデフォルトとして自動的に選択するように設定しました。

ここで、Linux 32 マシンを使用しているとします。win64 を呼び出してビルドしたいのですmvn -Pwin64 pakageが、そうすると、linux32 プロファイルと win64 プロファイルの両方がアクティブになります。タグactiveProfilesを使用してローカル プラットフォーム プロファイルをアクティブ化しようとしました。問題は、ドキュメントativationで説明されているように、-P が他のすべてのプロファイルを無効にしないことです。

このオプションは、使用するプロファイル ID のコンマ区切りリストである引数を取ります。このオプションを指定すると、オプション引数で指定されたプロファイル以外はアクティブになりません。

私はこれを間違って理解していますか?これをどのように処理しますか?

注: 実行できることはわかっていますmvn -P-linux32,win64、これは linux32 プラットフォームでのみ有効であり、間違いがあるとクラスが重複してビルドが肥大化する可能性があります。

ありがとう!

4

2 に答える 2

4

プロフィール ドキュメントからのこのステートメント:

Maven 3.0 以降、POM のプロファイルは、settings.xml のアクティブなプロファイルのプロパティに基づいてアクティブ化することもできます。

以下の解決策を試すように私を導きます。各開発者は、デフォルトのプラットフォームを settings.xml ファイルのプロパティとして定義し、必要に応じてコマンドラインでオーバーライドします。

開発者の settings.xml

<profile>
    <id>platform-config</id>
    <property>
        <name>build.platform</name>
        <value>win32</value>
    </property>
</profile>
....
<activeProfiles>
    <activeProfile>platform-config</activeProfile>
</activeProfiles>

プロジェクトの pom.xml

<project>
...
<profiles>
    <profile>
        <id>win32</id>
        <activation>
            <property>
                <name>build.platform</name>
                <value>win32</value>
            </property>
        </activation>
        ...
    </profile>
    <profile>
        <id>linux32</id>
        <activation>
            <property>
                <name>build.platform</name>
                <value>linux32</value>
            </property>
        </activation>
        ...
    </profile>
</profiles>

次に、プロパティmvn installのデフォルト値が win32 であるため、win32 プロファイルを有効にする必要がありますが、デフォルトのプロパティ設定をオーバーライドして、代わりに Linux プロファイルを使用します。build.platformmvn install -Dbuild.platform=linux32

于 2012-10-04T17:41:35.987 に答える
0

次のように、プラットフォームごとにプロファイルのアクティベーションを使用してみませんか。

<project>
    ...
    <profiles>
        <profile>
            <id>win32</id>
            <activation>
                <activeByDefault>false</activeByDefault>
                <os>
                   <name>Windows XP</name>
                                <family>Windows</family>
                                <arch>x86</arch>
                                <version>5.1.2600</version>
                        </os>
            </activation>
            ...
        </profile>
    </profiles>
</project>
于 2012-10-04T10:32:45.987 に答える