如何使用 Maven 中的 Eclipse p2 存储库?

问题描述 投票:0回答:3

我正在尝试创建一个基于 Eclipse 的设置,其中 Eclipse 项目是基于 Maven 的。所以无论是否使用 Eclipse,它都应该与 Maven 一起工作。

我依赖于各种 Eclipse 项目库,还有更多需要添加。我想使用 p2 存储库,并且我已按照以下示例设法提取 Eclipse EMF 库并将其转换为 jar:在常规 Maven 构建中使用 Eclipse p2 存储库中的依赖项?

问题是,我找不到简化流程的方法。我需要将上面给出的问题中重新打包的依赖项手动安装到本地 Maven 存储库,以便我可以在其他项目中引用它。我想将 p2 存储库中的工件无缝集成到我的基于 Maven 的设置中。 m4e 看起来不像我正在寻找的顺利解决方案:理想情况下,我想分发一组目录,这些目录将完成所有操作以响应简单的 mvn 全新安装:从 p2 存储库中提取库,从 Maven 存储库中提取其他库等等..

这可以通过 Maven 和 Tycho 集成实现吗?

更新:首先,澄清问题:仅仅能够引用 P2 存储库对于需要从另一个项目使用此引用的情况没有帮助。从 P2 存储库引用的库(或多个库)必须重新打包为 jar,以便可以被其他 Maven 项目引用。引用的问题进行包装。但是,它没有解释如何从其他项目使用此重新打包的输出(程序集)。就我而言,结果是从聚合 POM 引用程序集,并为所有想要使用具有 P2 存储库源的库的项目继承该 POM。

eclipse maven p2 tycho
3个回答
6
投票

Tycho 项目可以从 p2 存储库和 Maven 存储库中提取其依赖项(请参阅此相关答案)。即使您不是为 OSGi 运行时构建,这也可能是您的一个解决方案:大多数 OSGi 包也可以在类路径上作为“普通”JAR 工作。

限制:从 Maven 存储库引用的工件也必须是 OSGi 包,以便 Tycho 考虑将它们用于依赖关系解析。如果情况并非如此(并且您找不到 OSGi 捆绑包的替代品),您也许可以将 Tycho 的依赖项解析与普通 Maven 插件结合起来:

  • 使用第谷的一种打包类型(例如
    eclipse-feature
    )并以该打包类型的文件格式指定对 p2 工件的依赖关系(例如 a
    feature.xml
  • 另外在 POM 中配置普通 Maven 目标。第谷在运行时将 OSGi/p2 依赖项注入到 Maven 模型中,因此,例如
    maven-compiler-plugin:compile
    调用将同时看到 Maven 依赖项和 p2 依赖项。

1
投票

解决方案是使用 Maven 创建多模块设置,并声明对 EMF 库重新打包的输出的依赖关系(来自我引用的问题)所有项目的父 pom 都有:

    <dependencies>
    <dependency>
        <groupId>com.mymodule</groupId>
        <artifactId>myartifact</artifactId>
        <version>0.0.1</version>
        <classifier>repackaged</classifier>                 
    </dependency>
  </dependencies>
      <modules>
            <module>../mymodule</module>
     </modules>

这使得所有将此模块作为父模块的模块都可以访问重新打包的 P2 工件。


0
投票

您可以将 p2-artifacts 与 P2Repository 一起使用。此服务提供对 Maven 项目的 P2 存储库内容的访问

© www.soinside.com 2019 - 2024. All rights reserved.