Tycho项目中Eclipse未考虑来自pom.xml的依赖项
我用Tycho项目中Eclipse未考虑来自pom.xml的依赖项,eclipse,maven,tycho,Eclipse,Maven,Tycho,我用eclipse插件打包创建了一个Tycho项目。该项目包括一些通过pom.xml指定的依赖项。相关pom章节包括: UTF-8 0.15.0 src org.eclipse.tycho tycho maven插件 ${tycho.version} 真的 org.eclipse.tycho 目标平台配置 ${tycho.version} 考虑 win32 win32 x86 linux gtk x86_64 马科斯 热可可 x86_64 朱诺 p2 http://download.eclip
eclipse插件
打包创建了一个Tycho项目。该项目包括一些通过pom.xml指定的依赖项。相关pom章节包括:
UTF-8
0.15.0
src
org.eclipse.tycho
tycho maven插件
${tycho.version}
真的
org.eclipse.tycho
目标平台配置
${tycho.version}
考虑
win32
win32
x86
linux
gtk
x86_64
马科斯
热可可
x86_64
朱诺
p2
http://download.eclipse.org/releases/juno
com.springsource.repository.bundles.release
SpringSource企业捆绑包存储库-SpringSource捆绑包版本
http://repository.springsource.com/maven/bundles/release
com.springsource.repository.bundles.external
SpringSource企业捆绑包存储库-外部捆绑包版本
http://repository.springsource.com/maven/bundles/external
org.testng
com.springsource.org.testng
6.4.0
com.google.guice
com.springsource.com.google.inject
2.0.0
org.aopalliance
com.springsource.org.aopalliance
1.0.0
舱单是:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Plugin-project-pure
Bundle-SymbolicName: plugin-project-pure
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.eclipse.equinox.app,
org.eclipse.uml2.uml;bundle-version="4.0.0",
org.eclipse.uml2.uml.resources;bundle-version="4.0.0",
org.junit;bundle-version="4.10.0",
com.springsource.org.testng;bundle-version="[6.4.0,6.4.0]"
该项目仅包含默认包中的一个类,该类使用org.testng.annotations
中的注释来测试编译期间是否包含依赖项
如果我使用Maven 3.0.4在命令行上构建项目,那么一切都正常。在EclipseJuno中导入项目后,我得到了多个错误。最重要的是在清单中,它声明bundle
com.springsource.org.testng
无法解析。类中还有一个编译错误,因为无法导入注释。该项目配置了Maven特性。我是否丢失了一些东西,以便Eclipse Juno也会考虑从命令行导航到POM.XML所在的文件夹的POM?< P>的依赖关系。
运行mvneclipse:eclipse
这将生成一个有效的eclipse项目。您可以通过将项目构建分为两部分来避免此问题:
- 首先,将POM依赖项聚合到p2存储库中。为此,您需要一个
和一个eclipse特性
模块,以及一个单独的父POM,该POM列出POM依赖项并配置eclipse存储库
pomDependencies=consive
- 在第二个构建中,将p2存储库从第一个构建添加到,例如,通过指向本地Maven存储库中的构建结果的
URLjar:file:
我知道所有这些都需要花费相当多的精力来设置,但恐怕没有更好的解决方案可以完全发挥作用。解决maven RCP问题之间存在的所有问题的最优雅的解决方案是使用 . 以下是这些问题的简要总结(摘自上述链接): 为了向EclipseRCP项目添加第三方依赖项 依赖项必须驻留在P2更新站点中 Eclipse(和其他提供商)提供了一组公共更新站点, 但显然,并非所有流行的和公开可用的依赖项都是可用的 这就是问题编号#1) 由于EclipseRCP是一个OSGi环境,因此需要添加依赖项 对于p2更新站点,dependency必须是一个OSGi包(即 问题编号#2) 现在让我们总结一下:我们所有的工件都必须是OSGi包, 但它们并不总是捆绑的,它们必须位于P2中 网站,但我们没有那个网站。那我们怎么办呢 这并不难,有一个由Peter编写的“bnd”工具 Kriens可以将您的罐子转换成捆。还有一个 EclipseRCP提供的方便工具,可以生成P2站点 (尽管是以一种笨拙而痛苦的方式)。这两种工具都假设 您的jar/bundle位于本地文件夹中,这意味着您 必须手动下载。您可以使用Maven将其自动化 位,但在Maven的工作方式上有显著差异 计算依赖关系树,但这与 OSGi方式(即问题编号#3)。让我们详细说明一下 再多一点 它允许您定义一个pom打包项目,该项目将解析所有maven依赖项,将所有非OSGi依赖项转换为捆绑包,并从中生成p2站点 下面是完整的最小pom文件,包括对slf4j-log4j12的依赖关系(它隐式地依赖于slf4j和log4j v1.2):
4.0.0
别列佐夫斯基计划
p2
聚甲醛
1.0.0
org.reficio
p2maven插件
1.1.1-快照
默认cli
org.slf4j:slf4j-log4j12:1.7.7
org.mortbay.jetty
jetty maven插件
<?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>
<groupId>me.berezovskiy.project</groupId>
<artifactId>p2</artifactId>
<packaging>pom</packaging>
<version>1.0.0</version>
<build>
<plugins>
<plugin>
<groupId>org.reficio</groupId>
<artifactId>p2-maven-plugin</artifactId>
<version>1.1.1-SNAPSHOT</version>
<executions>
<execution>
<id>default-cli</id>
<configuration>
<artifacts>
<artifact>
<id>org.slf4j:slf4j-log4j12:1.7.7</id>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.12.v20130726</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webAppSourceDirectory>${basedir}/target/repository/</webAppSourceDirectory>
<webApp>
<contextPath>/site</contextPath>
</webApp>
</configuration>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
<id>reficio</id>
<url>http://repo.reficio.org/maven/</url>
</pluginRepository>
</pluginRepositories>
</project>