如何使用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