java - 使用 Eclipse 声明编译和运行时之间的暂时依赖关系的最佳方法是什么?

标签 java maven ant build-process gradle

我们正在寻求改进 Eclipse 上的 Java 构建流程。目前我们使用 Gradle!作为这项工作的一部分,我们正在研究是否以最佳方式使用 Gradle。我们使用 Gradle 的 Eclipse 插件并通过编译声明我们的依赖项。不幸的是,这增加了我们生成的 Eclipse 项目的大量 transient 依赖性,这是不可取的。这些额外的依赖项仅在运行时有效。

那么,有没有办法在 Gradle 中声明一次依赖项,并将其编译依赖项设置为第一级依赖项,并将其运行时依赖项设置为第一级依赖项加上 transient 依赖项?

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

有更好的方法吗?

最佳答案

我假设你的意思是传递依赖关系。

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

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

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

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

关于java - 使用 Eclipse 声明编译和运行时之间的暂时依赖关系的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17992280/

相关文章:

java - Windows下Maven安装 : "JAVA_HOME is set to an invalid directory"

macos - 在 Mac 上更新 Ant

android - Ant 中属性文件中的变量

java - 正则表达式只适用于字符串吗?

Java/DB2 首先获取 :n ROWS with custom parameter

Maven + jarsigner + 测试类 = 错误

java - Maven Shade 包含 slf4j-log4j12,尽管已明确从 POM 中排除

java - 通过 ANT 检索 SVN 修订版

java - Spring Security Oauth - 发送 token 请求时需要的基本访问认证

java - 有限 for 循环迭代的复杂性