Как использовать uploadConfigurationName и buildConfigurationName

В gradle документации мы можем прочитать:

Для каждой конфигурации в вашем проекте Gradle предоставляет задачи uploadConfigurationName и buildConfigurationName [18].

Насколько я понимаю, я могу создать сборку, которая выглядит так (без каких-либо плагинов, потому что я не хочу использовать плагины в этом проекте):

configurations {
    productSrc
}

// create zip file which will be published
buildProductSrc(type: Copy) << {
    // do the job
}

// publish zip which were build by buildProductSrc
uploadProductSrc {
    repositories {
        ivy {
            url "http://ivy.repo/repo"
        }
    }
}

Поэтому, если я запущу gradle buildProductSrc uploadProductSrc, он создаст zip и опубликует его в репозитории ivy. Я правильно понимаю, потому что это не работает?

[ОБНОВЛЕНИЕ] Согласно ответу Питера Нидервизера, это рабочая версия сборки:

apply plugin: 'base'

configurations {
    productSrc
}

// create zip file which will be published
buildProductSrc << { // unable to create specific task, for example 'type: Copy'
    // do the job
}

// publish zip which were build by buildProductSrc
uploadProductSrc {
    repositories {
        ivy {
            url "http://ivy.repo/repo"
        }
    }
}

person pepuch    schedule 05.06.2013    source источник
comment
Обратите внимание, что конфигурация productSrc приводит к buildProductSrc и uploadProductSrc — строчная буква «p» в productSrc становится прописной «P» в ProductSrc.   -  person m0j0hn    schedule 26.06.2017


Ответы (1)


Чтобы получить задачи uploadConfigurationName и buildConfigurationName, вам необходимо применить плагин base или плагин, который, в свою очередь, применяет плагин base (java, groovy и т. д.). Кроме того, вы можете объявить и настроить такие задачи самостоятельно (но это требует больше усилий).

person Peter Niederwieser    schedule 05.06.2013
comment
Можете ли вы также ответить, как я могу контролировать, какой файл, созданный с помощью buildConfigurationName, должен быть опубликован с помощью uploadConfigurationName? Например, в задаче build* я создаю 3 файла, но только один из них должен быть опубликован. - person pepuch; 05.06.2013
comment
Цель задачи buildConfigurationName — создать именно те артефакты, которые будет загружать uploadConfigurationName. Артефакты назначаются конфигурациям в блоке artifacts. - person Peter Niederwieser; 05.06.2013