在集成Maven,Tycho和Eclipse时处理非OSGi依赖项

thk*_*ala 13 java eclipse dependencies tycho maven

我有一堆基于Eclipse的插件,我一直在迁移到Maven/Tycho.大多数这些插件依赖于我现在通过Maven管理的单独库,而不是混淆.jar文件.

我当前设置中最麻烦的部分是由于Tycho明显无法处理仅Maven(即非OSGi)工件.我目前的设置是这样的:

  1. pom.xml每个Eclipse插件中,我在阶段发出一个unpack目标.这会将我指定的工件解包到一个单独的目录中.maven-dependency-plugininitializetarget/dependencies

  2. target/dependencies目录作为输出目录添加build.properties,因此Tycho可以在编译时将其添加到类路径中:

    source.. = src/main/java/
    output.. = target/classes/
    output.. = target/dependencies/
    
    Run Code Online (Sandbox Code Playgroud)
  3. target/dependencies目录将添加到Bundle-ClassPath库中META-INF/MANIFEST.MF.

这些设置允许compileMaven指令编译插件.从VCS导入项目并target/dependencies在Eclipse中手动指定目录作为类文件夹允许所述IDE也编译插件.

不幸的是,由于以下几个原因,这是一个相当麻烦的解决方案:

  • 配置maven-dependency-plugin要求列出应解压缩的所有工件.一个可以使用unpack-dependencies的替代unpack,但也将打开所有的OSGi依赖-的Eclipse有一半在每个项目目录解压不是我的乐趣所在......

  • 在Eclipse中添加类文件夹需要initialize运行一次Maven ,以便target/dependencies创建目录.

  • 纯Maven项目与Eclipse中依赖的Tycho项目之间没有源连接.对于从Maven项目传播到Tycho项目的更改,以便例如Eclipse可能显示潜在的编译问题,必须mvn install使用Maven项目然后mvn clean initialize在Tycho项目中运行以删除先前解压缩的依赖项并拉入当前集合.然后你必须刷新Eclipse项目并希望Eclipse做正确的事情.

    同样,从Tycho项目查看依赖关系源将不会显示主要源文件,而是显示可用的内容target/dependencies- 很可能只是一个.class文件.

我认为必须有一个更合理的方法来解决这个问题 - 这将允许Eclipse和Maven项目更紧密地集成.

那么,我错过了什么?这个用例的推荐设置是什么?还有更好的选择吗?最好是不需要设置一堆Nexus和/或p2存储库的东西?

xi.*_*lin 0

您可以尝试带有 Embed-Dependency 的 maven-bundle-plugin 。

请参阅http://wiki.eclipse.org/Tycho/How_Tos/Dependency_on_pom-first_artifacts

官方演示效果很好。但是,我仍然没有成功地以这种方式使用我的 jar 文件。