【问题标题】:Can gradle use latest.release as default dependency version?gradle 可以使用 latest.release 作为默认依赖版本吗?
【发布时间】:2014-12-23 17:25:08
【问题描述】:

我想在 build.gradle 某处写一次 version: 'latest.release'。 然后可以像这样简化依赖关系: 编译'org.jsoup:jsoup'

就像弹簧靴一样: 编译'org.springframework.boot:spring-boot-starter-web'

有可能吗?

【问题讨论】:

    标签: gradle


    【解决方案1】:

    通常,最佳做法是始终针对确切的版本进行构建,以避免出现意外情况。

    但是,如果您真的想针对最新版本进行构建,您可以这样做:

    dependencies {
      myConfiguration 'group:module:latest.release'
    }
    

    对所有工件强制执行 latest.release 的唯一(正确)方法是编写解决策略。 看看:ResolutionStrategy

    【讨论】:

    • 非常感谢。最后,我将所有 { resolutionStrategy { eachDependency { d -> if (!d.target.version) d.useVersion 'latest.release' } } } 添加到配置中
    【解决方案2】:

    我一般不会使用绝对最新版本,但您可以简单地在 gradle 中使用。

    语法使用“+”来匹配任何版本,例如"4.+" 将检查最新的 4.anything 版本。如果你只是单独使用“+”,它会找到最新的发布版本,但如果你依赖它,你可能会遇到麻烦,因为主要版本通常会有重大变化,你的构建只会下载它们而无需担心。

    不管怎样,一个小测试是:

    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath "junit:junit:+"
        }
    }
    
    import org.junit.Assert
    task someTask << {
        Assert.assertEquals(true, !false)
    }
    

    运行这个

    gradle someTask
    

    【讨论】:

    • + 将尝试获取最新(最高)的可用版本,但这并不一定意味着它是一个版本。
    • 完全同意。当然,这也取决于您对“发布”的定义,例如“最新的测试版”。但是我同意,如果 OP 是在生产版本之后而不是 alpha 或 beta 之后,那么正如您所建议的那样,使用特定版本(这也是我在内部坚持的 - 不希望构建由于外部更改而失败)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 2018-06-02
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多