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包。

 




相关推荐

Eclipse RCP是Rich Client Platform,即富客户平台,使用者可以使用Java来创建桌面程序,这些应用程序能够得到Eclipse的底层支持。 1、下载</p

运行时,Eclipse 应用的结构是通过一个application model来描述的。这个application model包含了应用中独立的元素和它们的结构关系。 每个mode

每个plug-ins可以通过下面方式作用于application model: (1)static contributions 通过文件,这些扩展称为fragment

1、@javax.inject.Inject 定义在JSR330中 ,可以写在字段、构建函数或方法上,Eclipse 框架试图把相关的对象注入到字段或实例的参数上。

一个Eclipse应用在启动过程时会创建一个实现IEclipseContext接口的对象,这个对象称为Eclipse context。 这个context和Map数据结构类似,但和

1、@PostConstruct 当一个类的构造函数执行,字段和方法都注入后执行。 2、@PreDestroy 类被destroyed前执行,可以用来清

Eclipse application model允许你指定command和handlers。 command和handlers model element的使用是可选的,你可以使

一个Eclipse application的配置包括icons、splash screen和plug-ins。 一个product总是指向一个application class,对

一个feature可以理解为一个逻辑单元,描述了一组plug-in和其它features。它也有name、version number和license information。 f

SWT全称是Standard Widget Toolkit。 Display和Shell Display和Shell类是SWT应用的主要组件,org.eclips