我正在尝试从应该发布到 maven 存储库的单个项目中创建多个 jar,但我似乎无法正确获取工件详细信息。
从我见过的处理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 文件是在执行其他所有操作之前构建的(在配置阶段),因此它只包含一个清单文件。
有没有更好的方法来创建多个罐子并将它们附加为工件?我还需要基于相同的模式创建几个 ear-files,其中包含这个 jar,所以找到一个可重用的解决方案会很好。我精通 Maven,但 Gradle 是一个新朋友,我还没有真正掌握如何构造这些问题!