[英]How can I make Tycho load platform specific fragment into the test runtime for any OS?
我正在使用Tycho來構建和測試一些eclipse插件。 我有一個包含許多平台特定片段的包。 我還有一個測試包,它使用tycho-surefire-plugin來測試具有平台特定片段的原始包。 但是,Tycho不會將當前平台的片段包含在測試運行時中。
所有特定於平台的片段看起來都像下面列出的win64片段清單。 (實際上總共有六個片段,每個平台組合需要支持一個片段。)
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Liferay AUI Upgrade Tool Win64
Bundle-SymbolicName: com.liferay.laut.win32.win32.x86_64;singleton:=true
Bundle-Version: 1.0.2.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Fragment-Host: com.liferay.ide.alloy.core
Eclipse-BundleShape: dir
Eclipse-PlatformFilter: (& (osgi.ws=win32)(osgi.os=win32)(osgi.arch=x86_64))
Bundle-Vendor: Liferay, Inc.
示例win64片段pom.xml的<build>
部分
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<configuration>
<environments>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86_64</arch>
</environment>
</environments>
</configuration>
</plugin>
</plugins>
</build>
當我嘗試執行我的Tycho構建並運行surefire測試插件時(無論我嘗試哪種操作系統),都沒有將正確的平台片段添加到運行時。
我已經在stackoverflow上看到了關於類似問題的各種 帖子 ,但在這些情況下,加載到測試運行時的片段不是具有OS過濾器的特定於平台的片段。
這是一個很好的問題 - 但如果您知道正確的技巧,那么解決方案幸運的並不復雜:只需將Tycho配置為將包含所有片段的功能包含在測試運行時中。
在eclipse-feature
模塊中創建一個包含所有本機片段的功能。 確保每個插件的平台過濾器都是正確的:在feature.xml編輯器的Plug-Ins選項卡上,您需要選擇每個片段適用的正確os / ws / arch。 這是一些手動操作,但通常可以重復使用此功能將您的片段包含到p2存儲庫/更新站點中。
使用以下POM配置將此功能包含在測試運行時中:
<plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>target-platform-configuration</artifactId> <version>${tycho-version}</version> <configuration> <dependency-resolution> <extraRequirements> <requirement> <type>eclipse-feature</type> <id>fragment-containing-feature</id> <versionRange>0.0.0</versionRange> </requirement> </extraRequirements> </dependency-resolution> </configuration> </plugin>
潛在的缺陷是eclipse-feature
模塊的<environments>
配置:您不需要該模塊的任何特殊內容; 讓模塊從父POM繼承<environments>
配置。 請注意,父POM應配置構建支持的所有環境 - 並且只有片段模塊需要覆蓋全局配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.