Наименование нескольких проектов Gradle: Как я могу установить свойство (например, baseName) для всех подпроектов?

Я начал использовать Gradle для мульти-проектов. Тем не менее, руководство Gradle не дает много советов для наилучшей практики в отношении наименования подпроектов.

У меня есть мультипроект с именем "регистратор данных", который состоит из двух подпроектов "ядро" и "записи":

- datalogger
--- core
--- entries

Когда я собираю проект, я получаю jars 'core-1.0.jar' и 'records-1.0.jar'. Как мне сделать так, чтобы названия были "datalogger-core-1.0.jar" и "datalogger-records-1.0.jar" в общем виде? Я знаю, я мог бы изменить имя папки следующим образом:

- datalogger
--- datalogger-core
--- datalogger-entries

Но это не будет рассматриваться как хороший подход, я полагаю. Я также мог бы вручную изменить archivesBaseName каждого проекта. Но я бы предпочел найти способ сделать это в общем виде, как упоминалось ранее.

3 ответа

Решение
subprojects {
    tasks.withType(Jar) {
        baseName = "datalogger-$project.name"
    }
}

В качестве альтернативы, вы можете установить archivesBaseName Аналогичным образом.

Мы обрабатываем это путем переименования подпроектов, новые имена будут учитываться при создании / именовании ваших jar- файлов: ref: как переименовать проект в gradle вместо использования имени папки?

include 'xxx', 'yyy'
rootProject.children.each { it.name = rootProject.name + it.name }

Для Kotlin: в файле сборки корневого проекта:

      subprojects {
    tasks.withType<Jar> {
        archiveBaseName.set("${rootProject.name}-${project.name}")
    }
}
Другие вопросы по тегам