问题 如何使用本地目录作为Tycho构建的目标平台?


我想用目标平台构建一个RCP-Application,这是一个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使用我的目标平台,虽然它是一个目录?


1380
2017-11-25 10:02


起源

我制作了一个.target文件并试图通过“target-platform-configuration”和工件来使用它,但它无法解决依赖...只是一个在线存储库支持? - Orri
Orri,你的评论似乎是一个不同的问题。你应该问一个新问题。 - oberlies


答案:


Tycho需要p2元数据才能解决构建中的依赖关系。这就是无法使用仅具有捆绑包和功能的文件夹的原因。

但是,您可以使用以下命令将文件夹转换为p2存储库 功能和捆绑发布者应用程序。完成此操作后,您可以通过a将该文件夹作为“软件站点”位置引用 file: 目标定义文件中的URL。然后第谷也将能够使用它。

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


8
2017-07-19 18:26





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

这个例子适用于mac和eclipse 4,但通过一些调整,你可以使它在其他平台上运行。

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

现在将插件复制到插件文件夹和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文件夹现在包含目标平台的repo。上传它,调整pom和构建。


3
2017-08-04 04:47





根据我的表现,第谷支持 线上 p2存储库。它拒绝使用位于本地磁盘上的p2 repo。奇怪但真实。


1
2018-04-26 23:40



此声明不正确:Tycho从0.14.0开始具有完全脱机模式支持,此后没有关于此主题的错误报告。显然,您首先需要一个在线构建,以便填充缓存,但随后离线模式工作。 - oberlies