общая задача для загрузки артефактов сборки, нескольких приложений - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть 5 разных приложений в моем monorepo, 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()?Я вообще новичок в обучении, поэтому спасибо за вашу помощь

...