我正在使用 gradle 为 AsciidoctorJ 编写扩展。我的扩展适用于所有2.x.x
版本的 AsciidoctorJ,所以我的想法是将依赖项声明为 range [2.0.0, 3.0.0[
。
dependencies {
implementation "org.asciidoctor:asciidoctorj:[2.0.0, 3.0.0["
// other dependencies
}
现在在 CI 系统上,我想使用多个版本的 AsciidoctorJ 进行测试,以确保它适用于该范围内的所有版本。
如果我使用锁定文件(请参阅锁定依赖版本,我不明白如何将版本设置为特定版本。--update-locks
不要指望版本:
./gradlew check --update-locks org.asciidoctor:asciidoctorj:2.2.0
失败并出现此错误:
更新锁格式必须为
<group>:<artifact>
但'org.asciidoctor:asciidoctorj:2.2.0'
无效。
这是预期的(如记录)。
我目前的解决方法是添加一个影响正在使用的严格版本的项目属性:
def strictAsciidoctorjVersion = hasProperty('asciidoctorjVersion') ? '!!' + getProperty('asciidoctorjVersion') : ''
dependencies {
implementation "org.asciidoctor:asciidoctorj:[2.0.0, 3.0.0[${strictAsciidoctorjVersion}"
// other dependencies
}
这按预期工作。我可以跑:
./gradlew build -PasciidoctorjVersion=2.2.0
或者
./gradlew build -PasciidoctorjVersion=2.5.1
我编写了一个 CI 作业,使用所有现有版本运行构建。
但是这个解决方案感觉很定制。我希望有更标准的东西并使用锁定文件。