我的monorepo中有5个不同的应用程序,每个应用程序的build.gradle包含一个几乎相同的任务,该任务与一个上载脚本一起负责上载与我们的Jenkins文件服务器匹配的文件。
我们可以称之为task releaseBuilds()
此代码位于名为artifactUploads.gradle
的文件中,该文件还包含名为UploadPlugin
的自定义插件。现在,我关心的是任务中的System.out.println()行。
apply plugin: UploadPlugin
task copyReleaseBuilds() {
doLast {
def dir = project.file('build/outputs/apk')
dir.eachFileRecurse(FILES) { file ->
if (file.getName().contains(".apk") && file.getName().contains("release")) {
System.out.println("uploading ${file.getName()}")
def rootDir = project.getRootDir().path
def filePath = file.path
def fileName = file.name.replace('app-', '')
exec {
workingDir rootDir
commandLine "./uploadBuild.sh", filePath, "$dirPath" + fileName
}.assertNormalExitValue()
}
}
}
}
class UploadPlugin implements Plugin<Project> {
void apply(Project project) {
//Create container instance for config object
//plugin stuff
NamedDomainObjectContainer<Config> configContainer =
project.container(Config)
project.extensions.add('directory', configContainer)
project.task('uploadConfig') << {
def uploadConfig = project.extensions.getByName('directory')
}
}
class Config{
String name
String dirPath
Config(final String name){
this.name = name
}
}
在每个我的应用程序/项目的build.gradle
文件中。我有线
apply from: "${rootDir}/artifactUploads.gradle
以及
directory{
name{
dirPath = "hca/"
println "stuff"
}
}
目录是在CustomPlugin中创建的某个对象。
现在,当我构建行println "Stuff"
时,输出到gradle日志中,但是找不到包含在artifactUploads.gradle
中的控制台输出,其中包含我的CustomPlugin和所有应用程序共享的任务。
据我了解,由于我的每个应用build.gradle
都有
apply from: artifactUploads.gradle
,现在每个应用程序都应运行copyReleaseBuilds()
任务,并使用在每个应用程序dirPath
的DSL部分中设置的自定义参数build.gradle
。
该构建不会达到该System.out.println()
的水平还有其他原因吗?总的来说,我是新手,所以谢谢您的帮助