gpt4 book ai didi

gradle - 从Gradle中的任务添加多个工件

转载 作者:行者123 更新时间:2023-12-03 05:18:17 25 4
gpt4 key购买 nike

我正在尝试从应该发布到Maven存储库的单个项目创建多个jar,但是我似乎无法正确理解 Artifact 细节。

从我看到的处理sources-jar的示例中,我尝试创建(动态)应创建每个jar的几个任务。

def environments = ['local', 'dev', 'test', 'acc', 'prod']

environments.each { e ->
task "create${e}jar"(type: Jar, dependsOn: classes) << {
def dir = filterPropertiesForEnv(e)

from (dir)
classifier = e
}

artifacts.add('archives', tasks["create${e}jar"])
}


File filterPropertiesForEnv(envName) {
println "filter for $envName"
def destDir = new File(project.buildDir, envName)

destDir.mkdir()

// Do filter stuff based on each envName

destDir
}

当我运行“安装”任务时,将运行我动态创建的任务“create [name] jar”,但它不会创建任何jar文件。如果删除doLast-“<<”,该构建会生成几个jar文件,但是该jar文件是在执行其他所有操作之前(在configure阶段)构建的,因此它仅包含 list 文件。

有没有更好的方法来创建多个jar并将其附加为 Artifact ?我还需要基于包含该jar的相同模式创建多个ear-file,因此找到一个可重用的解决方案将非常不错。
我能说流利的Maven,但是Gradle是一个新熟人,我还没有真正掌握如何解决这类问题!

最佳答案

经过对此事的进一步调查,我发现如果将闭包添加到from方法中,则评估将在运行时而不是配置时完成。

一个有效的解决方案将是:

def environments = ['local', 'dev', 'test', 'acc', 'prod']

environments.each { e ->
task "create${e}jar"(type: Jar, dependsOn: classes) << {

from {
filterPropertiesForEnv(e)
}
classifier = e
}

artifacts.add('archives', tasks["create${e}jar"])
}


File filterPropertiesForEnv(envName) {
println "filter for $envName"
def destDir = new File(project.buildDir, envName)

destDir.mkdir()

// Do filter stuff based on each envName

destDir
}

关于gradle - 从Gradle中的任务添加多个工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14843676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com