Плагин Gradle для чтения секретных (api-key, password) свойств (например, buildConfigField из плагина Android)

Есть ли какая-либо функция / плагин gradle для чтения / связывания некоторых секретных свойств (ключей API, паролей) из специальных файлов конфигурации / свойств?

Например, в плагине Android вы можете установить свойства в файле ~ /.gradle / gradle.properties:

apiKey=SUPER_SECRET_VALUE

чем в проекте build.gradle:

android {
    buildTypes {
        debug {
            buildConfigField "String", "API_KEY", apiKey
        }
    }    
}

И в самом проекте вы используете BuildConfig.API_KEY строковая константа.

Есть ли похожие решения в Gradle для других (Java) проектов?

Или, может быть, этот подход неправильный и нужно использовать какой-то другой обходной путь?

2 ответа

Вы всегда можете отфильтровать файлы. Вы передаете ресурсы или исходные файлы с помощью команды копирования и заменяете токены, например @API_KEY@filter а также ReplaceTokens) или же ${API_KEY} (с помощью expand) с переменными Gradle.

Например:

processResources {
    filter(ReplaceTokens, tokens: [API_KEY: apiKey])
}

Заменил бы подстроку @API_KEY@ с вашим реальным ключом API в любом из ваших файлов ресурсов.

В качестве альтернативы моему предыдущему ответу вы можете написать пользовательскую задачу Gradle, использующую CodeModel. Вот пример.

Другие вопросы по тегам