如何使用Eclipse P2存儲庫和Maven tycho-p2插件構建SWT應用程序?SWT使用Maven tycho-p2插件
回答
您可以爲'target-platform-configuration'插件定義目標環境。無論您爲多個環境構建RCP還是功能,都可以讓您的功能爲這些主機添加swt的碎片。
<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</arch>
</environment>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86</arch>
</environment>
<environment>
<os>solaris</os>
<ws>gtk</ws>
<arch>sparc</arch>
</environment>
</environments>
</configuration>
</plugin>
片段feature.xml中
<plugin
id="org.eclipse.swt"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.swt.gtk.linux.x86"
os="linux"
ws="gtk"
arch="x86"
download-size="0"
install-size="0"
version="0.0.0"
fragment="true"
unpack="false"/>
<plugin
id="org.eclipse.swt.win32.win32.x86"
os="win32"
ws="win32"
arch="x86"
download-size="0"
install-size="0"
version="0.0.0"
fragment="true"
unpack="false"/>
我正在構建一個插件('
Tycho允許您編譯基於eclipse的東西,包括插件,功能和RCP應用程序&。在官方的項目頁面上有很多很好的教程,但在我的案例中,我使用了示例項目(http://git.eclipse.org/c/tycho/org.eclipse.tycho-demo.git/tree/itp04-rcp)。
不過,如果你並不需要建立一些插件或RCP應用程序,我想你不需要第谷:你剛纔可以導入SWT作爲一個正常的Maven的依賴,建立自己的應用程序,方法...
這個例子看起來不錯,但並不能解釋它是如何工作的。我的問題是,我收到一條錯誤消息('無法確定SWT實現片段包'),我不知道如何擺脫它。這可能是我錯過的一些細節,因爲我的項目中所有明顯的設置都與演示中的相同。 – 2011-11-01 17:12:44
+1,tycho的RCP示例演示瞭如何爲多個環境(如Windows和Linux)構建應用程序。 – Kane 2011-11-02 05:11:42
@Kane:我沒有構建RCP產品,而是依賴於SWT的捆綁軟件。 – 2011-11-02 08:19:05
我發現這個問題。背景:我正在構建Xtext爲DSL生成的編輯器插件。這個插件取決於org.eclipse.swt;version=3.7.0
。 packaging
是eclipse-plugin
。我是listing all the necessary environments in my parent POM。
p2存儲庫是我的硬盤上的一個本地鏡像,通過導出目標定義(* .target文件)填充。
問題是,導出目標定義會創建一些看起來很像p2回購的東西,但存在細微的差異。
例如,您必須在目標定義文件中定義目標環境(Linux/Windows/Mac,x86/x86_64,win32/cocoa/gtk)。如果您沒有指定任何內容,Eclipse將使用當前平臺。如果您使用「*」,則所有SWT片段將被省略。
這意味着:出口包含,它們在contents.jar
提及,但在artifact.jar
只列出符合你當前平臺的單一SWT片段的所有SWT片段(在plugins/
文件夾30個插件)(即包加來源)。
這對Tycho來說還不夠。
解決方案:使用這個小腳本適當P2回購:
# Where you exported the Target Definition
dir="$HOME/3.7.1-from-target-platform"
# Where the result should be written. Must be != dir
dest="$HOME/3.7.1-from-target-platform-fixed"
# Make sure subsequent invocations don't try to merge old stuff
rm -rf "$dest"
# Prepend "file:" to create a URL from the path
dest="file:$dest"
echo "Merging $dir..."
./eclipse -nosplash \
-application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher \
-metadataRepository "$dest" \
-artifactRepository "$dest" \
-repositoryName "3.7.1 Indigo Repository" \
-source "$dir" \
-compress -append -publishArtifacts
運行這個工作Eclipse安裝內。
- 1. Maven插件:使用插件的插件
- 2. SBT的GWT插件/使用Maven插件
- 3. 試驗Maven插件是使用Maven 3.0.4
- 4. Eclipse插件和swt
- 5. 使用Maven插件發佈
- 6. 掛鉤定製Maven插件使用Maven插件發佈
- 7. 使用maven插件更改文件xml
- 8. 轉換maven插件exec-maven插件gradle
- 9. 使用maven-plugin-plugin使用help-mojo階段編譯Maven插件
- 10. Maven的,錯誤時使用Maven構建具組件插件
- 11. 使用maven插件生成Cobertura報告
- 12. maven:使用哪個jaxb插件?
- 13. P2-Maven的插件無法使用Hadoop
- 14. 使用maven-彈簧啓動插件
- 15. maven-shade插件的AppenderTransformer的使用
- 16. 使用JDO的Maven GAE插件
- 17. 使用maven-萬無一失,插件
- 18. liquibase使用maven的插件錯誤
- 19. 指定使用Maven Exec插件
- 20. Liquibase maven插件未使用classpath屬性
- 21. 在SBT上使用maven插件
- 22. 使用add_import_path選項的sass-maven插件
- 23. 使用SSL與maven貨物tomcat插件
- 24. 在插件中使用maven版本
- 25. 如何使用聲納Maven插件
- 26. 使用maven插件生成報告
- 27. 使用Maven Assembly插件打包rxtx庫
- 28. Maven war插件
- 29. Maven JAXB插件
- 30. Maven tomcat插件
我想看到這個 - 祝你好運,但答案:) – javamonkey79 2010-06-28 05:11:12
我找不到你的問題的細節。需要更多信息。 – Kane 2011-11-02 05:10:50
@Kane:什麼原因導致錯誤信息「無法確定SWT實施片段包」?我的POM中缺少哪些信息? – 2011-11-02 08:17:36