在集成 Maven、Tycho 和 Eclipse 时处理非 OSGi 依赖项
我有一堆基于Eclipse的插件,我一直在迁移到Maven / Tycho。这些插件中的大多数都依赖于我现在通过Maven管理的单独库,而不是混淆文件。.jar
我当前设置中最繁琐的部分是由于第谷显然无法处理仅限Maven(即非OSGi)的工件。我当前的设置是这样的:
在每个 Eclipse 插件中,我都会在阶段中发布一个目标。这会将我指定的工件解压缩到单独的目录中。
pom.xml
unpack
maven-dependency-plugin
initialize
target/dependencies
-
该目录将作为 输出目录添加到 中,以便 Tycho 可以在编译时将其添加到类路径中:
target/dependencies
build.properties
source.. = src/main/java/ output.. = target/classes/ output.. = target/dependencies/
该目录将添加到 的库中。
target/dependencies
Bundle-ClassPath
META-INF/MANIFEST.MF
这些设置允许 Maven 指令编译插件。从VCS导入项目并在Eclipse中手动将目录指定为类文件夹允许所述IDE编译插件。compile
target/dependencies
不幸的是,这是一个相当繁琐的解决方案,原因如下:
配置 需要列出应解压缩的所有项目。可以使用 代替 ,但这也将解压缩所有 OSGi 依赖项 - 在每个项目目录中解压缩一半的 Eclipse 并不是我的乐趣所在......
maven-dependency-plugin
unpack-dependencies
unpack
在 Eclipse 中添加类文件夹需要运行 Maven 一次,以便创建目录。
initialize
target/dependencies
-
纯 Maven 项目与 Eclipse 中的 Tycho 项目之间没有源连接。要将更改从 Maven 项目传播到 Tycho 项目,以便例如 Eclipse 可能显示潜在的编译问题,必须对 Maven 项目进行更改,然后在 Tycho 项目中运行以删除以前解压缩的依赖项并拉入当前集。然后,您必须刷新 Eclipse 项目,并希望 Eclipse 能够做正确的事情。
mvn install
mvn clean initialize
同样,从 Tycho 项目中查看依赖项的源代码不会显示主源文件,而是显示其中可用的任何内容 - 很可能只是一个文件。
target/dependencies
.class
我认为必须有一种更合理的方法来解决这个问题 - 这将使Eclipse和Maven项目能够更紧密地集成。
那么,我错过了什么呢?此用例的建议设置是什么?有没有更好的选择?最好是不需要设置一堆Nexus和/或p2存储库的东西?