2017-07-27 7 views
1

私はSWTに依存するプロジェクトに取り組んでいます。ビルドツールと依存関係管理システムとしてMavenを使用しています。 SWTはプラットフォームに依存するため、どのプラットフォームを使用するか依存関係をMavenに伝える必要があります。相互排他的な値のリストを使用したMavenプロファイルのアクティブ化

<profiles> 
    <profile> 
    <id>Linux-x86</id> 
    <activation> 
     <os> 
     <family>linux</family> 
     <arch>i386</arch> 
     </os> 
    </activation> 
    <dependencies> 
     <dependency> 
     <!-- some platform-specific dependency goes here --> 
     </dependency> 
    </dependencies> 
    </profile> 
</profiles> 

問題がos.archは、いくつかを有することができることである。

Mavenのプロファイルは、通常、条件付きos.familyos.archような特性に応じて依存関係を含めるために利用されます「i386」、「i486」、「i586」などの異なる値が使用されますが、SWTの世界ではすべて「x86」にマッピングされます。

値ごとに別々のプロファイルを作成する必要はなく、相互排他的な値のリスト(厳密なケースではos.arch)をMavenの条件として指定する可能性はありますか?

+0

は、私の知る限りではありさまざまなプラットフォームやアーキテクチャなどを含む製品を構築し、その製品を開始することができます適切なプラットフォームが自動的に正しい成果物を選択します。 OSGi? – khmarbaise

+0

実際の動作の詳細はありますか?任意の例がありますか?前もって感謝します! –

答えて

0

haven'tはそれをテストしたが、

は、Mavenのドキュメントを参照してくださいx86アーチ....

Maven Profiles

maven enforcer plugin

os arch variables

+0

私のテストマシン(Ubuntu 16.04)は、Maven 3.3.9でArch: "i386"を返します。プロジェクトは x86でコンパイルされませんが、 i386で動作します。 –

+0

hm okもう1つのアプローチ...必要なシステムプロパティを定義することはどうなるでしょうか?これは論理的かもしれません... http://maven.apache.org/enforcer/enforcer-rules/requireProperty.html –

+0

はい、システムプロパティを設定しています確かに私がさらに調査したい解決策になるでしょう。私はどこかでos.a​​rchが "x86"に条件付きで再定義されることを見てきましたが、これは醜いIMHOです。私のGradleスクリプトでは、通常は2行のGroovyコードしか必要としない単純な配列の再マッピングを使用します。現時点では、私はそれがMavenで短くエレガントな方法でやり遂げることはできません... –

関連する問題