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