【问题标题】:How to pass version range externally in gradle如何在gradle中从外部传递版本范围
【发布时间】:2023-12-12 07:23:01
【问题描述】:

Gradle(2.11 版)新手试图弄清楚如何在 build.gradle 之外定义版本范围。

List artifactIds_group1=[
    'g1_a1',
    'g1_a2',
    'g1_a3'
]
def group1_deps=[]
artifactIds_group1.each {
    group1_deps.push(
        [
            group: 'com.example.group1',
            name: "$it",
            version: '(,2016.02.24-UTC]'
        ]
    )
}

我有多个这样的 groupIds+artifactIds 并且想通过版本范围上限(始终遵循格式 yyyy.mm.dd-UTC - 其中 -UTC 是硬编码的)通过

  1. gradle.properties
  2. 命令行 (-Pmy_version=2016.02.24-UTC)

依赖项由另一个团队托管在工件中的 maven repo 上。所以我尝试了所有这些都是徒劳的:

  1. build.gradle 和 version: "$my_version" 和 gradle.properties 和 my_version='(,2016.02.24-UTC]'
  2. build.gradle 和 version: "(,$my_version]" 和 gradle.properties 和 my_version='2016.02.24-UTC'
  3. build.gradle 和 version: "(," + my_version + "]" 和 gradle.properties 和 my_version='2016.02.24-UTC'

我可能弄错了最后一个(不确定project.project.ext 前缀)。

但是,除非在 build.gradle 中定义,否则输入的类型似乎是字符串(不是版本规范)。

有人可以分享如何从外部控制该范围上限吗?

【问题讨论】:

    标签: gradle versioning


    【解决方案1】:

    您可以像这样访问 gradle.properties 文件中的属性:

    def my_version = project.ext['my_version']
    

    您可以像这样访问命令行变量:

    gradle(w) (task) -Pmy_version=2016.02.24-UTC
    def my_version = project.hasProperty('my_version') ? project.my_version : "not found"
    

    【讨论】: