Gradle - 动态构建多个出版物

时间:2015-12-08 00:22:41

标签: groovy gradle ivy

我接下来的项目有一个Gradle脚本,可以根据列表动态构建任务。这样,当人们分叉存储库时,他们只能编辑列表。归结为这样的事情:

def files = ['file1', 'file2', 'file3']

files.each { f ->
    task (f, type: Exec) {
        executable 'touch'
        args file
    }
}

我想做的是能够发布任务的输出。理想情况下,我希望以多个发布的方式执行此操作。我用下面的代码片段给了它一个刺,但Gradle似乎真的很讨厌我使用java.lang.String.call()作为类名!

publishing {
    publications {
        files.each { f ->
            f (IvyPublication) {
                module f
                artifact (file(f))
            }
        }
    }
}

我正在尝试做什么,或者我应该完全改变大头钉?

[edit]我我可以用IvyPublication.loadClass(f)做到这一点,但是在努力解决细节问题。任何帮助非常感谢

1 个答案:

答案 0 :(得分:1)

啊哈!我找到了解决方案。它并不像使用类加载器那样令人兴奋,但确实有效:

publishing {
    files.each { f ->
        publications.create(f, IvyPublication) {
            module f
            artifact (file(f))
        }
    }
}