2012-11-21 135 views
6

我嘗試使用MavenTycho編譯Eclipse Indigo RCP應用程序。如果我只是爲一個平臺構建它,但如果我嘗試構建它以便構建停止工作,則它工作正常。使用Maven Tycho構建Eclipse跨平臺

問題是我在我想要構建的產品文件中有特定於平臺的插件。像org.eclipse.swt.win32.win32.x86這樣的依賴關係,它們是org.eclipse.swt的片段插件。
當我沒有添加平臺特定片段到我的產品時,應用程序不會啓動,因爲沒有像org.eclipse.swt.win32.win32.x86這樣的平臺庫。 作爲Tycho存儲庫,我們使用託管在我們自己的服務器上的eclipse indigo更新站點的克隆。它包括增量包。 當我爲所有平臺添加所有片段時,構建崩潰,maven告訴我,例如,平臺過濾器與Linux構建不匹配。

有誰知道如何解決這個問題?
我應該將這些平臺相關的東西添加到我的產品中嗎?我寧願將特定的依賴關係排除在我的產品之外,對嗎?

+0

這個問題已經過時了。所述問題僅出現在Tycho 0.15.0及更早的版本中。 – oberlies

回答

7

這聽起來像你有一個基於插件的產品。在這種情況下,您需要手動編輯.product文件併爲這些插件添加平臺過濾器。不幸的是,eclipse中的內置產品編輯器不公開這些值。請參閱http://wiki.eclipse.org/Tycho/FAQ#How_to_build_plugin-based_products_with_platform-specific_fragments.3F

對於每個插件,例如org.eclipse.swt.win32.win32.x86你需要添加類似於;

<plugin id="org.eclipse.swt.win32.win32.x86" fragment="true" ws="win32" os="win32" arch="x86"/> 

請注意,如果您使用產品編輯器,它將刪除這些值。

但是最好使用基於特徵的產品。功能編輯器允許編輯這些字段。

+0

+1正是我在找的 – msteiger

+0

似乎並不需要在第谷0.16.0(也許已經0.15.0) – msteiger

+1

@msteiger:這是正確的。 [自Tycho 0.16.0](https://bugs.eclipse.org/bugs/show_bug.cgi?id=342890),您不再需要手動設置產品文件中的ws/os/arch屬性 - 第谷build會自動爲你設置它們。 – oberlies

1

有一個簡單的解決方案,我在博客中發現:http://blog.sdruskat.net/building-a-cross-platform-feature-based-eclipse-rcp-product-with-tycho-the-umpteenth/

在父/主的pom.xml, 要使用所有的插件從P2,指定以下內容:

<build> 
<plugins> 
    <plugin> 
    <groupId>org.eclipse.tycho</groupId> 
    <artifactId>tycho-maven-plugin</artifactId> 
    <version>${tycho-version}</version> 
    <extensions>true</extensions> 
    </plugin> 

    <plugin> 
    <groupId>org.eclipse.tycho</groupId> 
    <artifactId>target-platform-configuration</artifactId> 
    <version>${tycho-version}</version> 
    <configuration> 
     <resolver>p2</resolver> 
     <environments> 
      <environment> 
      <os>linux</os> 
      <ws>gtk</ws> 
      <arch>x86_64</arch> 
      </environment> 
      <environment> 
      <os>win32</os> 
      <ws>win32</ws> 
      <arch>x86_64</arch> 
      </environment> 
     </environments> 
    </configuration> 
    </plugin> 
</plugins> 
</build> 

我的tycho版本是0.21.0