我想创造一个Eclipse项目是基于Maven的基于Eclipse的设置。 因此,它应该与Maven所有的工作是否被使用的Eclipse。
我曾在不同的Eclipse项目库从属物,更以复加。 我想用P2存储库,我已经成功地拉一个Eclipse EMF库,并把它变成下面这个例子罐子: 从Eclipse的P2库使用依赖于定期Maven构建?
问题是,我无法找到简化流程的一种方式。 我需要手动从上面给本地仓库的问题,安装重新打包的依赖,使我可以引用其他项目。 我想从P2文物库无缝集成到基于我Maven的设置。 M4E看起来并不像顺利解决我在寻找:理想情况下,我想发布一组目录,其将尽一切以响应简单MVN干净安装:拉从P2回购库,从Maven仓库拉其他图书馆等等..
这是通过Maven和第谷的整合是可行的?
更新:第一,澄清的问题:刚能够以P2为基准库不与在此引用需要从其他项目中使用的情况下帮助。 库(或库)从P2存储库引用必须被重新打包为一个罐子,以便它可以通过其他Maven项目引用。 引用的问题做包装。 但是,它没有解释如何重新打包输出(组装)可以从其他项目中使用。 在我而言,这竟然是来自聚集POM,秉承形式引用组件POM对于想利用图书馆与P2存储库出身的所有项目。
第谷项目可以拉动他们的依赖来自P2存储库和Maven仓库(见本相关的答案 )。 这可能是你最好的选择,即使你不建设一个OSGi运行时:大多数OSGi包也作为在classpath“普通”的JAR文件。
限制:从Maven仓库中引用的文物也必须是OSGi包,让第谷认为,他们依赖解析。 如果不是这种情况(和你无法找到替代它们是OSGi包),你可以第谷的依赖分辨率与普通的Maven插件相结合:
- 使用第谷的包装类型中的一种(如
eclipse-feature
),并在包装类型的文件格式指定依赖于P2工件(如feature.xml
) - 另外配置您的POM平原Maven目标。 第谷注入了OSGi / P2的依赖到在运行Maven的模型,所以例如
maven-compiler-plugin:compile
调用将同时看到Maven依赖和P2的依赖。
该解决方案是创建一个多模块的设置与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文物,具有该模块的所有模块。