- 浏览: 33168 次
- 性别:
- 来自: 济南
附件中是我总结的使用tycho管理Eclipse插件项目的架构图。
附有构建项目实例代码。
下面简要说明下项目架构
1.创建parent项目itp02-parent
其中pom.xml内容如下:
2.我们创建普通的Eclipse 插件,名称tycho.demo.itp02.bundle
其pom.xml是这样定义的:
在这个项目中,我们使用了如下代码:
这里的PomFirst实际上来自其它的工程(pomfirst-bundle)
3.下面来看下它的pom文件是如何定义的:
去overview选项卡,你会发现它的packaging:jar
这里它也属与第三方jar包,不过不是从外部引用的2进制jar,而是我们自己定义的jar。
OK,接下来咱看看真正的第三方jar如何定义:
4.我们创建名称为pomfirst-thirdparty工程,其中pom文件内容如下:
我们将其打成了bundle。
5.最后我们把pomfirst-bundle,pomfirst-thirdparty交给itp02-pomfirst-parent来管理,这个parent的pom文件如下:
为了保证我们之前的eclipse-plugin工程(tycho.demo.itp02.bundle)的成功创建,我们必须先构建我们引用的第三方包(这里说的就是被打成jar和bundle的工程)
6.构建测试插件tycho.demo.itp02.bundle.tests
pom.xml内容如下;
7.为了实现在线更新,我们创建tyco.demo.itp02.feature,其中pom的内容如下:
8.创建站点工程:
附有构建项目实例代码。
下面简要说明下项目架构
1.创建parent项目itp02-parent
其中pom.xml内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <prerequisites> <maven>3.0</maven> </prerequisites> <groupId>tycho.demo.itp02</groupId> <artifactId>itp02-parent</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>pom</packaging> <properties> <tycho-version>0.20.0</tycho-version> </properties> <modules> <module>tycho.demo.itp02.bundle</module> <module>tycho.demo.itp02.bundle.tests</module> <module>tyco.demo.itp02.feature</module> <module> tyco.demo.itp02.p2Update</module> </modules> <dependencies> <dependency> <groupId>tycho.demo.itp02</groupId> <artifactId>pomfirst-bundle</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> <dependency> <groupId>tycho.demo.itp02</groupId> <artifactId>pomfirst-thirdparty</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> </dependencies> <repositories> <repository> <id>helios</id> <layout>p2</layout> <url>http://download.eclipse.org/releases/helios</url> </repository> </repositories> <build> <plugins> <plugin> <groupId>org.eclipse.tycho</groupId> <!-- The Tycho Maven Plugin provides extensions to build Eclipse projects. --> <artifactId>tycho-maven-plugin</artifactId> <version>${tycho-version}</version> <extensions>true</extensions> </plugin> <plugin> <groupId>org.eclipse.tycho</groupId> <!-- Tycho Target Platform Configuration Plugin --> <artifactId>target-platform-configuration</artifactId> <version>${tycho-version}</version> <configuration> <pomDependencies>consider</pomDependencies> </configuration> </plugin> </plugins> </build> </project>
2.我们创建普通的Eclipse 插件,名称tycho.demo.itp02.bundle
其pom.xml是这样定义的:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>tycho.demo.itp02</groupId> <artifactId>itp02-parent</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <artifactId>tycho.demo.itp02.bundle</artifactId> <packaging>eclipse-plugin</packaging> </project>
在这个项目中,我们使用了如下代码:
/******************************************************************************* * Copyright (c) 2008, 2011 Sonatype Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Sonatype Inc. - initial API and implementation *******************************************************************************/ package tycho.demo.itp02.bundle; import tycho.demo.itp02.pomfirst.PomFirst; public class ITP02 { public String getMessage() { return new PomFirst().getMessage(); } }
这里的PomFirst实际上来自其它的工程(pomfirst-bundle)
3.下面来看下它的pom文件是如何定义的:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>tycho.demo.itp02</groupId> <artifactId>itp02-pomfirst-parent</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <artifactId>pomfirst-bundle</artifactId> <dependencies> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-utils</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <executions> <execution> <id>bundle-manifest</id> <phase>process-classes</phase> <goals> <goal>manifest</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
去overview选项卡,你会发现它的packaging:jar
这里它也属与第三方jar包,不过不是从外部引用的2进制jar,而是我们自己定义的jar。
OK,接下来咱看看真正的第三方jar如何定义:
4.我们创建名称为pomfirst-thirdparty工程,其中pom文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>tycho.demo.itp02</groupId> <artifactId>itp02-pomfirst-parent</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <artifactId>pomfirst-thirdparty</artifactId> <packaging>bundle</packaging> <dependencies> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-utils</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <configuration> <instructions> <Embed-Dependency> plexus-utils </Embed-Dependency> <_exportcontents> org.codehaus.plexus.util.*;version="2.0.7" </_exportcontents> <Bundle-ClassPath>{maven-dependencies}</Bundle-ClassPath> <Embed-Transitive>true</Embed-Transitive> <Embed-Directory>jars</Embed-Directory> <_failok>true</_failok> <_nouses>true</_nouses> </instructions> </configuration> </plugin> </plugins> </build> </project>
我们将其打成了bundle。
5.最后我们把pomfirst-bundle,pomfirst-thirdparty交给itp02-pomfirst-parent来管理,这个parent的pom文件如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <prerequisites> <maven>3.0</maven> </prerequisites> <groupId>tycho.demo.itp02</groupId> <artifactId>itp02-pomfirst-parent</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>pom</packaging> <properties> <tycho-version>0.20.0</tycho-version> <manifest-location>META-INF</manifest-location> </properties> <modules> <module>pomfirst-bundle</module> <module>pomfirst-thirdparty</module> </modules> <dependencyManagement> <dependencies> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-utils</artifactId> <version>2.0.7</version> </dependency> </dependencies> </dependencyManagement> <build> <pluginManagement> <plugins> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>2.3.1</version> <configuration> <archive> <manifestFile>${manifest-location}/MANIFEST.MF</manifestFile> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <version>2.1.0</version> <configuration> <manifestLocation>${manifest-location}</manifestLocation> </configuration> </plugin> </plugins> </pluginManagement> </build> </project>
为了保证我们之前的eclipse-plugin工程(tycho.demo.itp02.bundle)的成功创建,我们必须先构建我们引用的第三方包(这里说的就是被打成jar和bundle的工程)
6.构建测试插件tycho.demo.itp02.bundle.tests
pom.xml内容如下;
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>tycho.demo.itp02</groupId> <artifactId>itp02-parent</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <artifactId>tycho.demo.itp02.bundle.tests</artifactId> <packaging>eclipse-test-plugin</packaging> </project>
7.为了实现在线更新,我们创建tyco.demo.itp02.feature,其中pom的内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>tyco.demo.itp02.feature</artifactId> <packaging>eclipse-feature</packaging> <parent> <groupId>tycho.demo.itp02</groupId> <artifactId>itp02-parent</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> </project>
8.创建站点工程:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>tyco.demo.itp02.p2Update</artifactId> <packaging>eclipse-repository</packaging> <parent> <groupId>tycho.demo.itp02</groupId> <artifactId>itp02-parent</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <build> <plugins> <plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-p2-director-plugin</artifactId> <version>${tycho-version}</version> <configuration> <formats> <win32>zip</win32> <linux>tar.gz</linux> <macosx>tar.gz</macosx> </formats> </configuration> <executions> <execution> <id>materialize-products</id> <goals> <goal>materialize-products</goal> </goals> </execution> <execution> <id>archive-products</id> <goals> <goal>archive-products</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
发表评论
-
打造eclipse product
2015-01-16 16:08 599请参考:http://www.ibm.com/develope ... -
关于插件卸载后plugin文件下扔保留插件文件的解释
2015-01-16 14:24 597But why aren't uninstalled bund ... -
RCP开发遇到SWTError: swt no more handles 问题解决
2014-11-02 21:05 844应用场景:在打开的编辑器中创建类图,每打开一次都要用到类图、字 ... -
rcp插件代码打包后出现中文乱码
2014-11-02 21:06 495使用message文件对含义中文的类进行国际化。在类上单击右键 ... -
插件开发中与spring集成遇到的问题
2014-10-31 19:43 1054场景: 1.我把spring的所有jar包到放到一个插 ... -
Eclipse撤销恢复机制分享
2014-10-31 19:41 2977来看下命令模式的高级篇。redo/undo操作的实现 1.首先 ... -
基于jdt的源码搜索
2014-10-31 19:40 1227Eclipse 为程序员提供了强大的文本搜索功能,程序员可以方 ... -
搜索Jar包中的类或包
2014-10-31 19:37 723import java.io.File; import jav ...
相关推荐
3. **运行父POM来构建插件、特性及产品**:执行Maven构建,当构建产品时,Tycho会根据目标平台的OS和架构从特性项目中的相应JRE子文件夹复制JRE到产品目录中。例如,如果目标是Linux GTK 32位,那么特性项目中`linux...
开发者需要创建一个`plugin.xml`文件来定义插件的元数据,包括插件ID、版本、依赖项以及提供的服务和扩展点。 在Eclipse插件开发中,"扩展点"是一个关键概念。扩展点是Eclipse平台预先定义的一组接口,允许插件对其...
- **管理插件依赖**:解释如何管理插件之间的依赖关系,包括依赖库的版本控制和依赖解决策略。 - **插件生命周期管理**:讨论插件从开发到部署的整个过程中的关键步骤,如构建、测试、打包和发布。 #### 3. 设计高...
Eclipse图形插件的开发需要对Eclipse插件体系结构有深入理解,包括插件依赖、生命周期管理、事件处理等。同时,熟练掌握EMF、GEF和相关API是必不可少的。随着技术的发展,现在的Eclipse社区提供了更多现代的解决方案...
总之,Eclipse插件开发涵盖了软件工程的多个方面,包括编程、UI设计、软件架构和项目管理。通过熟练掌握这些知识点,开发者可以充分利用Eclipse的强大功能,构建出满足特定需求的高效开发工具。
Tycho则是一个Maven插件,它允许基于Eclipse插件的项目使用Maven进行构建,特别适用于那些需要处理复杂依赖关系和插件结构的项目。 总的来说,这个“arm-repo.rar”文件为在aarch64架构上运行或开发Eclipse应用的...
Maven是一个流行的Java项目管理和集成工具,它通过定义项目的构建过程和依赖关系来自动化构建任务。Tycho-Karaf-Bridge将Maven与Karaf相结合,允许开发者使用Maven命令直接生成Karaf兼容的.kar文件。这种.kar文件是...
5. **PDE工具的使用**:PDE工具集是Eclipse插件开发的主要工具,包括了插件向导、扩展点查看器、插件依赖分析等。这部分会详细介绍如何使用这些工具来简化开发流程,提高效率。 6. **团队协作与版本控制**:Eclipse...
这涉及到理解OSGi模块系统,它是Eclipse的基础架构,负责插件的加载和依赖管理。开发者需要学习Plug-in Development Environment (PDE),这是一个Eclipse内建的工具集,用于构建、调试和打包Eclipse插件及RCP(Rich ...
Eclipse RCP(Rich Client Platform)是一个开源框架,...通过研究这个项目,开发者可以深入了解Eclipse RCP的架构、插件开发、测试策略以及使用Tycho进行持续集成的方法,从而提升在Java桌面应用开发领域的专业技能。
OSGi引入了依赖管理、服务生命周期管理、动态更新和版本化等特性。它允许开发者将应用拆分成独立的模块,并且可以独立地部署、更新和卸载这些模块,而不会影响到其他模块的运行。 在OSGi规范中,每个Bundle都必须有...
- **模块化**:采用OSGi模块系统,增强了插件的依赖管理和隔离,使得应用程序更加模块化和可维护。 - **外观与行为分离**:允许开发者独立定制应用程序的外观和行为,提供了更好的主题支持。 3. **Eclipse Rich ...