Переместить конфигурацию публикации в одно место в gradle

У меня есть проект с модулями, моя цель - настроить публикацию после сборки каждого модуля и после сборки всех модулей, чтобы я мог создать zip-файл со всеми банками внутри и также загрузить его. Я делаю это в разделе subprojects и во внешнем разделе.

publishing {
  publications {
    mavenJava(MavenPublication) {
      //my artifacts here
    }
  }
  repositories {
    maven {
      url "${artifactoryURL}"
      credentials {
        username = "${artifactoryUsername}"
        password = "${artifactoryPassword}"
      }
    }
  }
}

Есть ли способ переместить конфигурацию repositories в одно место, чтобы избежать дублирования этой конфигурации?


person Rostislav V    schedule 27.09.2017    source источник


Ответы (1)


Я предполагаю, что вы создаете свои развертываемые компоненты в проекте верхнего уровня (корневой, родительский), у которого нет никаких источников.

Есть ли способ переместить конфигурацию репозиториев в одно место, чтобы избежать дублирования этой конфигурации?

Конечно. Просто используйте subprojects, allprojects или общий configure в зависимости от ваших потребностей:

allprojects {
  id 'maven-publish'

  publishing {
    repositories {
      maven {
        url "http://maven.repo"
      }
    }
  }
}

Это настроит публикацию для всех проектов (имейте в виду, что вы можете не захотеть публиковать все).

Для проектов с исходным кодом Java вы можете настроить публикацию как обычно:

subprojects {
  publishing {
      publications {
          main(MavenPublication) {
              from components.java

              artifact sourcesJar
              artifact javadocJar
          }
      }
  }
}

А для корневого проекта просто настройте развертывание, как в вашем предыдущем вопросе.

person madhead    schedule 27.09.2017
comment
Важно ли упоминать id 'maven-publish' ? - person Rostislav V; 27.09.2017
comment
Я изменил id 'maven-publish' на apply plugin: 'maven-publish', и теперь он работает. - person Rostislav V; 02.10.2017
comment
Конечно, это была опечатка. id 'maven-publish' для нового блока plugins. - person madhead; 02.10.2017