Gradle - 帮助为 Ivy Publish 动态设置修订

标签 gradle build.gradle ivy

我正在尝试在子项目中创建一个 Ivy 出版物,该子项目具有基于根项目的版本属性的动态修订版,该版本属性也是动态设置的。到目前为止,修订始终未指定,我找不到设置修订的方法。

我是使用 Gradle 的新手,所以我希望有一个我不知道的简单解决方案。 BuildVersion 设置根项目的版本。它正在运行,但我没有尝试过设置它的修订版。这是我正在使用的子项目脚本。我不包括任何我尝试过但没有奏效的东西。

apply plugin: 'ivy-publish'

task sourceJar(type: Jar) {
     from sourceSets.main.java
     classifier "source"
}

publish.dependsOn rootProject.buildVersion

publishing {
     repositories {
         ivy {
             url "${rootProject.buildDir}/repo"
             layout 'ivy'
         }
     }
     publications {
         ivy(IvyPublication) {
             organisation 'com.test'
             module 'test'
             revision rootProject.version
             from components.java
             artifact(sourceJar) {
                 type "source"
                 conf "default"
             }
         }
     }
 }

最佳答案

本身不是答案,但我没有代表发表评论!

我自己也在做类似的事情。我的设置略有不同,因为我使用 Jenkins 运行 Gradle 并触发将 Ivy 格式的工件部署到 Artifactory。无论如何,我发现 Jenkins 插件使用 project.version 作为修订版,所以一直在 Gradle 中设置它。

猜猜我和你一样新手,但以防万一它对你有帮助......

更新:
鉴于评论,以下内容将允许您将 ivy 修订版的设置推迟到执行阶段:

tasks.create(name: 'preTask') { 
  doLast { 
    // put execution phase code here 
  }
}

tasks.create(name: 'Task') {
  dependsOn preTask
  publishing.publications.ivy.revision rootProject.version
}

关于Gradle - 帮助为 Ivy Publish 动态设置修订,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37392445/

相关文章:

build - ivy.xml 用于发布工件的目的是什么?

gradle - 如何使用 kotlinscript DSL (build.gradle.kts) 通过 url 添加 maven 存储库

ant - Ant-javac没有看到Gradle的依赖

android - 错误:(39,13)无法解决:com.parse.bolts:bolts-android:1. +

build - 将settings.gradle应用到具有非标准构建名称的Gradle构建中

java - 升级到新的 Android Studio 后我一直遇到错误

intellij-idea - 无法从 'https://services.gradle.org/distributions/gradle-2.1-all.zip' 安装 Gradle 发行版

gradle - 配置 Gradle 4.7 为 JUnit 5 测试生成 HTML 报告

version-control - Gradle:Ant-wards 兼容吗?

grails - 是否可以从 grails 应用程序中使用预定义的 ivysettings.xml