2017-07-27 45 views
1

我正在開發一個依賴於SWT的項目。它使用Maven作爲構建工具和依賴管理系統。因爲SWT是依賴於平臺的,所以我需要告訴Maven應該使用哪個平臺。使用互斥值列表激活Maven配置文件

Maven的輪廓通常用於有條件地包括根據os.family依賴性os.arch屬性那樣:

<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可以有幾個不同的值 - 「i386」,「i486」,「i586」等,但在SWT世界中,它們都映射到「x86」。

有沒有可能在Maven中指定一個互斥的值列表(os.arch,在我的精確情況下)作爲條件,而無需爲每個值創建單獨的配置文件?

+0

據我所知您可以構建包含不同平臺/體系結構等的產品,並啓動該產品一個合適的平臺會自動選擇正確的工件。 OSGi? – khmarbaise

+0

你有沒有關於它在實踐中如何工作的更多細節?任何例子可能?提前致謝! –

回答

0

haven't測試,但有一個拱形x86

看到Maven的文檔....

Maven Profiles

maven enforcer plugin

os arch variables

+0

我的測試機器(Ubuntu 16.04)在Maven 3.3.9中返回Arch:「i386」。該項目不編譯 x86但它適用於 i386。 –

+0

hm ok另一種方法...怎麼樣定義一個必需的系統屬性,這可能是一個脫節... http://maven.apache.org/enforcer/enforcer-rules/requireProperty.html –

+0

是的,設置一個系統屬性確實是我想要進一步調查的解決方案。我見過os.arch將有條件地重新定義爲「x86」,這是醜陋的恕我直言。在我的Gradle腳本中,我通常使用一個簡單的數組重映射,它只需要兩行Groovy代碼。就目前而言,我不明白在Maven中如何以簡短優雅的方式完成這項工作...... –

相關問題