Eclipse RCP Tycho
阅读数:158 评论数:0
跳转到新版页面分类
python/Java
正文
Tycho is a set of Maven plugins and extensions for building Eclipse plugins and OSGi bundles with Maven。
其实简单的说,就是Tycho是一套可以构建eclipse plugin和OSGi bundle的maven插件,由于Tycho在最大程序上复用了RCP开发当中的MANIFEST.MF文件,因此我们可以用极少的配置就可以完成所有的构建工作。Tycho支持三种打包类型:
(1)eclipse-plugin
对应Plugin。
(2)eclipse-feature
对应Feature。
(3)eclipse-repository
对应P2 update site和Product。
由于Tycho本质上还是一套Maven的插件,所以他的配置文件自然的也就是我们熟悉的POM文件。对于每一个plugin或者feature等项目,我们都应该创建一个与之对应的POM文件。在实际的build过程中,tycho会通过POM文件去读取RCP程序中的配置文件(plugin.xml和MANIFEST.MF等)。在这里要特别的提一下,因为Maven中对Artifact定义和RCP中对Bundle定义是通过不同的标准来实现的。在POM文件中我们应该确保Artifact ID和Version应该等同于MANIFEST.MF文件中的Bundle-Symbolc-Name和Version。同理假如我们一个plugin的version是1.0.0.qualifier,相对的我们pom中的version应当是1.0.0-SNAPSHOT。
为了让eclipse的Maven插件(m2e)能读的懂Tycho的配置,需要做如下几步:
(1)Preferences->Maven->Discovery->Open Catalog
(2)在弹出的对话框中找到Tycho Configurator,然后勾选安装。
使用示例
新创建plugin项目并不是一个Maven的项目,我们首先需要把他convert成为一个maven的项目。右键项目名-》Configure->Convert to Maven Project。这个时候会弹出一个对话框,需要给一个POM的基本信息。
正如前文所说,POM中的Artifact ID和Version应该等同于MANIFEST.MF文件中的Bundle-Symbolic-Name和Version。如果bundle的version定义是以qualifier结尾,POM中的version也就应该对应以SNAPSHOT结尾。最后,我们在packaging属性中给的是eclipse-plugin,这个属性会告诉Maven,这个项目是一个plugin项目。转化成Maven项目之后,我们会发现项目并不识别eclipse-plugin这种打包方式。
这是由于在POM文件中并没有提供Tycho插件信息,需要在pom文件中指定。
<properties>
<tycho.version>0.22.0</tycho.version>
<luna-repo.url>http://download.eclipse.org/releases/luna</luna-repo.url>
</properties>
<repositories>
<repository>
<id>luna</id>
<url>${luna-repo.url}</url>
<layout>p2</layout>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>${tycho.version}</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
在这里使用的是eclipse 4.4 luna版本的SDK,plugin当中就是Tycho插件的信息,用的是0.22.0版本。
接下来就可以build这个plugin了,右键选择项目名-》Run As->Maven build,在弹出的对话框中,我们把Goals设定成为clean install。
如果是第一次运行,maven会从eclipse luna P2的site上下载一些所需要的依赖到你的本地repository当中,如果本地的repository已经包含了这些dependencies,tycho会直接build这个plugin项目并把build出来的jar安装到本的repository当中。
build成功之后,刷新plugin项目,会发现在target文件夹当中多出了许多的东西,其中jar包就是Tycho为这个plugin所build出来的jar包。