簡體   English   中英

如何將Tycho加載平台特定片段放入任何操作系統的測試運行時?

[英]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配置為將包含所有片段的功能包含在測試運行時中。

  1. eclipse-feature模塊中創建一個包含所有本機片段的功能。 確保每個插件的平台過濾器都是正確的:在feature.xml編輯器的Plug-Ins選項卡上,您需要選擇每個片段適用的正確os / ws / arch。 這是一些手動操作,但通常可以重復使用此功能將您的片段包含到p2存儲庫/更新站點中。

  2. 使用以下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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM