如何将本地目录用作Tycho构建的目标平台?

14

我想使用Maven/Tycho构建一个RCP应用程序,其目标平台是一个目录。
但现在我遇到了依赖项无法解析的问题。

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 使用我的目标平台,即使它是一个目录?


我创建了一个.target文件,并尝试通过“target-platform-configuration”和artifact来使用它,但它无法解析依赖项...只支持在线存储库吗? - Orri
Orri,你的评论似乎是一个不同的问题。你应该为它提出一个新的问题。 - oberlies
2个回答

10

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

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

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


3
从您的插件创建一个仓库并将其上传到一个HTTP服务器(如Apache),然后将您的Tycho POM指向该仓库。此示例适用于Mac和Eclipse 4,但稍加修改即可在其他平台上使用。
首先,在桌面上创建一个src文件夹。在此文件夹中创建两个文件夹: features plugins
现在将您的插件复制到plugins文件夹中,将特征复制到features文件夹中。
然后在某个空目录中创建一个空的目标文件夹(上传此文件夹到您的服务器)。
为了简单起见,本示例中我在桌面上创建了这两个文件夹。
接下来,执行以下操作:
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文件夹中包含您的目标平台的仓库。上传它,调整pom文件并进行构建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接