Как получить rootProject.name и сделать его доступным для приложения, тестирования и распространения? - PullRequest
0 голосов
/ 21 марта 2020

В build.gradle это достаточно просто:

println "project name $name"

... но это не будет доступно в распределенной версии приложения. Также я не понимаю, как мне легко получить доступ к этому значению из внутреннего тестирования и кода приложения.

Имя должно быть доступно в "settings.gradle": надеюсь, оно должно содержать строку типа:

rootProject.name = 'MyProject'

Если я хочу включить это имя в тест, а также в код приложения, а также убедиться, что эта информация доступна для распределенной версии приложения, например, с использованием installDist, мне кажется, что лучшим способом может быть автоматизировать, перед тестированием, сборкой и распространением, задачу, которая извлекает эту информацию из settings.gradle и помещает ее в файл .properties в каталоге src / main / resources.

Как бы я сделай это? Или ... есть ли лучший подход?

PS Возможный вариант использования может быть для настройки пути файла журнала: ... / logging / MyProject ... Возможно, есть другие.

1 Ответ

0 голосов
/ 22 марта 2020

build.gradle:

task copySettingsGradle {
    doFirst {
        ant.copy(file: 'settings.gradle',
                todir: 'src/main/resources',
                overwrite: true,
                failonerror: true)
    }
}
classes.dependsOn copySettingsGradle

код приложения:

        URL settingsGradleURL = App.class.getResource( '/settings.gradle' )
        ConfigObject conf = new ConfigSlurper().parse( settingsGradleURL )
        def projectName = conf.rootProject.name

... смысл в том, что он работает как во время разработки Gradle, так и в распределенном приложении. .

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