14

我想用一个目标平台构建一个 RCP 应用程序,该平台是一个带有 Maven/Tycho 的目录。
现在我遇到了一些无法解决依赖关系的麻烦。

Internal error: java.lang.RuntimeException: "No solution found because the  
problem is unsatisfiable.": ["Unable to satisfy dependency from  
de.test.prototype.main 1.0.0.qualifier to bundle org.eclipse.ui 0.0.0.",  
"Unable to satisfy dependency from de.test.prototype.main 1.0.0.qualifier  
to bundle org.eclipse.core.runtime 0.0.0.", ...

总而言之,存在几个依赖解析问题,所以我认为 Tycho 无法使用我的目标平台。
我阅读了http://wiki.eclipse.org/Tycho/Target_Platform并且有以下注释:

不支持位置类型“目录”、“安装”和“功能”。

所以我的问题是:我如何让 Tycho 使用我的目标平台,尽管它是一个目录?

4

2 回答 2

10

Tycho 需要 p2 元数据来解决构建中的依赖关系。这就是为什么不能使用仅包含捆绑包和功能的文件夹的原因。

但是,您可以使用Features and Bundles Publisher Application将您的文件夹转换为 p2 存储库。完成此操作后,您可以通过file:目标定义文件中的 URL 将该文件夹引用为“软件站点”位置。那么第谷也将能够使用它。

但是请注意,您应该首先问自己是否真的需要这样做:您文件夹中的功能和捆绑包真的在任何 p2 存储库中都不可用吗?如果是,强烈建议不要在它们上运行 Features and Bundles Publisher(否则您可能会违反 p2 的基本假设,这可能会导致通常仅对您的用户可见的问题)。相反,您应该直接从 p2 存储库引用这些功能和捆绑包,例如通过目标文件中的“软件站点”位置。

于 2012-07-19T18:26:27.217 回答
3

从您的插件创建一个 repo 并将其上传到 http 服务器(如 apache)并将您的 tycho pom 指向 repo

此示例适用于 mac 和 eclipse 4,但通过一些调整,您可以使其在其他平台上运行。

首先在桌面上创建一个 src 文件夹。在此文件夹中创建 2 个文件夹:功能插件

现在复制插件文件夹中的插件和功能文件夹中的功能。

然后在某处创建一个空的目标文件夹(将此文件夹上传到您的服务器)

对于这个例子,我在桌面上创建了两个文件夹以保持简单

然后我这样做:

destination folder : /Users/yves/Desktop/repo
source folder : /Users/yves/Desktop/src

Terminal app : cd /Applications/Eclipse4

./eclipse  -debug -consolelog -nosplash -verbose -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher -metadataRepository file:/Users/yves/Desktop/repo -artifactRepository file:/Users/yves/Desktop/repo -source /Users/yves/Desktop/src -compress -append -publishArtifacts

repo 文件夹现在包含目标平台的 repo。上传它,调整 pom 并构建。

于 2012-08-04T04:47:57.610 回答