Gradle-发布工件

Gradle-发布工件,gradle,ivy,Gradle,Ivy,我想将工件发布到ivy存储库,但它不起作用。我阅读并在阅读后创建了此示例构建: task ivyPublishTest << { def buildDir = new File("build") buildDir.mkdirs() def fileToPublish = new File("build/file.abc") fileToPublish.write("asdasdasd") } artifacts { archives(ivyP

我想将工件发布到ivy存储库,但它不起作用。我阅读并在阅读后创建了此示例构建:

task ivyPublishTest << {
    def buildDir = new File("build")
    buildDir.mkdirs()
    def fileToPublish = new File("build/file.abc")
    fileToPublish.write("asdasdasd")
}

artifacts {
    archives(ivyPublishTest.fileToPublish) {
        name 'gradle-test-artifact'
        builtBy ivyPublishTest
    }
}

uploadArchives {
    repositories {
        ivy {
            url "http://my.ivy.repo/ivyrep/shared"
        }
    }
}

task ivyPublishTest在Groovy中,
def
创建一个局部变量,该变量在词汇范围内。因此,
fileToPublish
在任务操作之外不可见。此外,必须在配置阶段完成配置(即任务操作中
fileToPublish
的声明和分配将太迟)。下面是一个正确的解决方案:

task ivyPublishTest {
    // configuration (always evaluated)
    def buildDir = new File("build")
    ext.fileToPublish = new File("build/file.abc")
    doLast {
        // execution (only evaluated if and when the task executes)
        buildDir.mkdirs()
        fileToPublish.write("asdasdasd")
    }
}

artifacts {
    // configuration (always evaluated)
    archives(ivyPublishTest.fileToPublish) {
        name 'gradle-test-artifact'
        builtBy ivyPublishTest
    }
}

ext.fileToPublish=…
声明一个附加到现有对象的新属性,该属性在对象(本例中为任务)可见的任何地方都可见。您可以在中阅读更多关于额外属性的信息。

在Groovy中,
def
创建一个局部变量,该变量在词汇范围内。因此,
fileToPublish
在任务操作之外不可见。此外,必须在配置阶段完成配置(即任务操作中
fileToPublish
的声明和分配将太迟)。下面是一个正确的解决方案:

task ivyPublishTest {
    // configuration (always evaluated)
    def buildDir = new File("build")
    ext.fileToPublish = new File("build/file.abc")
    doLast {
        // execution (only evaluated if and when the task executes)
        buildDir.mkdirs()
        fileToPublish.write("asdasdasd")
    }
}

artifacts {
    // configuration (always evaluated)
    archives(ivyPublishTest.fileToPublish) {
        name 'gradle-test-artifact'
        builtBy ivyPublishTest
    }
}

ext.fileToPublish=…
声明一个附加到现有对象的新属性,该属性在对象(本例中为任务)可见的任何地方都可见。您可以在中阅读更多关于额外属性的信息。

谢谢,但现在gradle显示了此错误
无法找到参数的方法archives()[build\file.abc,build\u 343353k3f117pa3tdkoipl9of$\u run\u closure2\u clos…
您可能没有应用诸如
java
之类的插件来声明
存档
配置。请查看完整的Gradle发行版中的示例构建。好的,我现在明白了。我可以在没有任何插件的情况下发布工件吗?谢谢,但现在Gradle展示了这一点错误
找不到参数的方法存档()[build\file.abc,build\u 343353k3f117pa3tdkoipl9of$\u run\u closure2\u clos…
您可能没有应用诸如
java
之类的插件来声明
存档
配置。请在完整的Gradle发行版中查看示例构建。好的,我现在明白了。我可以在没有任何插件的情况下发布工件吗?