gradle получить имя подпроекта, версию - PullRequest
0 голосов
/ 07 ноября 2018

корневой проект build.gradle

subprojects {
    jar {
        manifest {
            attributes Name: project.archivesBaseName,
                    Version: project.version
        }
    }
}

подпроект A build.gradle

archivesBaseName = 'AAA'
version = '1.0.1'

подпроект B build.gradle

archivesBaseName = 'BBB'
version = '1.0.2'

То, что я хочу, это после запуска gradlew build в корневом проекте, в файле манифеста проектов A и B есть Name: AAA Version: 1.0.1 и Name BBB version: 1.0.2. Но то, что я получил, это Имя, это имя проекта: A, а Версия: unspecified ...

Name: A Version: unspecified

1 Ответ

0 голосов
/ 07 ноября 2018

Вам нужно обернуть свое закрытие конфигурации subproject в закрытие обратного вызова projectsEvaluated:

gradle.projectsEvaluated {
    subprojects { subproject ->

        jar {
            manifest {
                attributes Name: subproject.archivesBaseName,
                        Version: subproject.version
            }
        }
    }
}

почему? потому что, когда ваше закрытие конфигурации subproject было выполнено в корневом родительском проекте (на этапе настройки), значения свойств archiveBaseName и version из подпроектов еще не оценивались, поэтому jar Неправильная конфигурация для атрибута манифеста. Вы должны установить эту конфигурацию, когда все проекты были оценены ==> использовать для этого projectsEvaluated ловушку жизненного цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...