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>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值