繁体   English   中英

在Eclipse中声明编译和运行时之间的瞬时依赖关系的最佳方法是什么?

[英]What is the best way to declare transient dependencies between compile and runtime with Eclipse?

我们正在寻求在Eclipse上改进Java构建过程。 目前,我们使用Gradle! 作为这项工作的一部分,我们正在研究是否正在以最佳方式使用Gradle。 我们将Eclipse插件用于Gradle,并使用compile声明我们的依赖项。 不幸的是,这给我们生成的Eclipse项目增加了大量的临时依赖关系,这是不希望的。 这些额外的依赖项仅在运行时有效。

那么,是否有一种方法可以在Gradle中声明依赖项ONCE,并将其编译依赖项设置为第一级依赖项,并将其运行时依赖项设置为第一级并加上瞬态依赖项?

当前,我们将@jar语法与compile一起使用,这为我们提供了用于编译的第一级依赖关系,但对于运行时,我们仍然必须再次声明该依赖关系。 这并不理想,因为我们有两个地方可以更新依赖项。

有没有更好的办法?

我假设您的意思是传递依赖。

如果只希望直接依赖项出现在Gradle的编译类路径中,则当前的解决方案似乎很合理。 (将来,我们希望开箱即@jar提供更准确的编译类路径。)潜在的改进是使compile配置不具有传递性(而不是使用@jar )或编写一个提供自定义功能的插件依赖语法,从而消除了编译依赖和运行时依赖之间的重复。

但是,这对Eclipse没有帮助,因为Eclipse没有单独的编译和运行时类路径的概念。 唯一的出路是让运行配置负责提供运行时类路径,但这可能很难设置(例如,运行配置通常是即时创建的),并且Gradle不会有任何过时的对此的支持。 您可以使用Gradle的Eclipse插件的通用XML挂钩来生成运行配置,但是我不确定Eclipse Gradle集成是否可以使用它们。

由于这些困难,尽管有明显的缺点,但是大多数Eclipse开发人员都将所有运行时依赖项放在Eclipse项目类路径上(无论他们是否使用Gradle)。

我们的愿景是Gradle有一天可以充当Eclipse的构建引擎。 一旦发生这种情况,IDE和构建工具之间的差异(类路径,代码生成,集成测试等)将成为过去。 Gradle现在已经可以充当NetBeans的构建引擎,并且很快也可以充当IntelliJ IDEA(由Android Studio的要求驱动)。

我当然同意@Peter的观点,即对Eclipse构建过程进行全面检查是一个长期目标,但在短期内,您可以使用Maven和m2eclipse完成您想要的工作。 迁移到Maven的权衡是否值得额外控制完全取决于您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM