我正在寻找处理混合项目类型之间项目间依赖关系的最佳实践,其中一些项目是 eclipse 插件/OSGI 捆绑项目(RCP 应用程序),而其他项目只是普通的旧 Java 项目(Web 服务模块)。很少有 Eclipse 插件依赖于 Java 项目。
我的问题是,至少在我看来,没有办法在 Eclipse PDE 环境中清晰地表达这种依赖关系。我可以让插件项目依赖于其他插件项目(通过Import-Package
或Require-Bundle
清单头),但不是普通的 java 项目。
我似乎能够让项目声明对工作区中另一个项目的 jar 的依赖,但是这些 jar 文件不会被导出或启动配置所拾取(尽管,java 代码编辑可以很好地看到这些库)。
“Java 项目”用于构建要部署在 J2EE 容器(目前为 JBoss 4.2.2)上的服务,并在某些情况下生成多个 jar - 一个用于部署到 JBoss ear,另一个用于客户端代码(一个RCP 应用程序)。
我们现在“解决”这个问题的方法是我们有 2 个额外的外部工具启动器配置 - 一个用于构建所有 jar,另一个用于将这些 jar 复制到插件项目。这可行(有点),但是“整个构建”和“复制 jars”目标会产生相当大的构建步骤,绕过整个 eclipse 增量构建功能并通过复制 jars 而不是仅仅引用我正在解耦依赖信息的项目并要求进行相当大的工作空间刷新,这会像糖果一样消耗开发时间。
我想要的是一个更“自然”的工作空间设置,它将管理项目之间的依赖关系并仅在需要时请求增量重建,能够在 RCP 应用程序插件中使用来自服务库的客户端代码,并且能够在需要的地方启动带有所有必要类的 RCP 应用程序。
所以我可以把蛋糕也吃掉吗;)
笔记
需要明确的是,目前这不是关于依赖管理和模块管理,而是关于 Eclipse PDE 配置。
我非常了解 [Maven]、[Ivy] 和 [Buckminster] 之类的产品,它们解决了一个完全不同的问题(一旦我解决了工作区配置问题,这些产品实际上可以派上用场实现工作区和构建产品)