`
wangchuanyin
  • 浏览: 32764 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

tycho管理插件依赖架构

 
阅读更多
附件中是我总结的使用tycho管理Eclipse插件项目的架构图。
附有构建项目实例代码。
下面简要说明下项目架构
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>




  • 大小: 73.1 KB
分享到:
评论

相关推荐

    Bundle JRE along with your Product using Maven Tycho.pdf

    3. **运行父POM来构建插件、特性及产品**:执行Maven构建,当构建产品时,Tycho会根据目标平台的OS和架构从特性项目中的相应JRE子文件夹复制JRE到产品目录中。例如,如果目标是Linux GTK 32位,那么特性项目中`linux...

    eclipse插件开发步步教你

    开发者需要创建一个`plugin.xml`文件来定义插件的元数据,包括插件ID、版本、依赖项以及提供的服务和扩展点。 在Eclipse插件开发中,"扩展点"是一个关键概念。扩展点是Eclipse平台预先定义的一组接口,允许插件对其...

    Eclipse Building Commercial Quality Plug-ins 3rd

    - **管理插件依赖**:解释如何管理插件之间的依赖关系,包括依赖库的版本控制和依赖解决策略。 - **插件生命周期管理**:讨论插件从开发到部署的整个过程中的关键步骤,如构建、测试、打包和发布。 #### 3. 设计高...

    eclipse图形插件

    Eclipse图形插件的开发需要对Eclipse插件体系结构有深入理解,包括插件依赖、生命周期管理、事件处理等。同时,熟练掌握EMF、GEF和相关API是必不可少的。随着技术的发展,现在的Eclipse社区提供了更多现代的解决方案...

    eclipse_plugin

    总之,Eclipse插件开发涵盖了软件工程的多个方面,包括编程、UI设计、软件架构和项目管理。通过熟练掌握这些知识点,开发者可以充分利用Eclipse的强大功能,构建出满足特定需求的高效开发工具。

    arm-repo.rar

    Tycho则是一个Maven插件,它允许基于Eclipse插件的项目使用Maven进行构建,特别适用于那些需要处理复杂依赖关系和插件结构的项目。 总的来说,这个“arm-repo.rar”文件为在aarch64架构上运行或开发Eclipse应用的...

    pustefix-iwrapper-plugin-0.18.30.zip

    Maven是一个流行的Java项目管理和集成工具,它通过定义项目的构建过程和依赖关系来自动化构建任务。Tycho-Karaf-Bridge将Maven与Karaf相结合,允许开发者使用Maven命令直接生成Karaf兼容的.kar文件。这种.kar文件是...

    Eclipse应用开发完全手册 part2

    5. **PDE工具的使用**:PDE工具集是Eclipse插件开发的主要工具,包括了插件向导、扩展点查看器、插件依赖分析等。这部分会详细介绍如何使用这些工具来简化开发流程,提高效率。 6. **团队协作与版本控制**:Eclipse...

    eclipse开发团队技术介绍.zip

    这涉及到理解OSGi模块系统,它是Eclipse的基础架构,负责插件的加载和依赖管理。开发者需要学习Plug-in Development Environment (PDE),这是一个Eclipse内建的工具集,用于构建、调试和打包Eclipse插件及RCP(Rich ...

    eclipse_rcp_example:repo用于演示功能,片段,测试,tycho等更多功能的完整eclipse rcp开发

    Eclipse RCP(Rich Client Platform)是一个开源框架,...通过研究这个项目,开发者可以深入了解Eclipse RCP的架构、插件开发、测试策略以及使用Tycho进行持续集成的方法,从而提升在Java桌面应用开发领域的专业技能。

    osgi 构建模块化云应用之中文版

    OSGi引入了依赖管理、服务生命周期管理、动态更新和版本化等特性。它允许开发者将应用拆分成独立的模块,并且可以独立地部署、更新和卸载这些模块,而不会影响到其他模块的运行。 在OSGi规范中,每个Bundle都必须有...

    Eclipse Rich Client Platform (vogella).zip

    - **模块化**:采用OSGi模块系统,增强了插件的依赖管理和隔离,使得应用程序更加模块化和可维护。 - **外观与行为分离**:允许开发者独立定制应用程序的外观和行为,提供了更好的主题支持。 3. **Eclipse Rich ...

Global site tag (gtag.js) - Google Analytics