Вопрос

У нас есть несколько независимых сборков (каждая независимая сборка является многопроектной сборкой). Основные сценарии сборки становятся довольно большими, поскольку у нас есть набор общих задач, повторно используемых подпроектами, а также много повторяющихся между независимыми сборками. Мы ищем:

  1. Способ разделить основной сборник сборки на более мелкие файлы
  2. Способ повторного использования некоторых частей сборки в других независимых сборках

Как лучше всего достичь этого в Градле?

Это было полезно?

Решение

Gradle 0.9 позволяет импортировать сценарий сборки из другого сценария сборки. Посмотри на: Настройка проекта с использованием внешнего сценария сборки. Анкет В основном это apply from: 'other.gradle'.

Одна вещь, которую пользователь не упоминает, заключается в том, что параметр «от» может быть URL -адресом, поэтому вы можете сделать свои общие сценарии доступными через HTTP (например, ваш репозиторий подрывной деятельности) и импортировать их из нескольких сборок.

Другие советы

Решение, которое я нашел other.gradle файл.

def getVersionName = { ->
    def stdout = new ByteArrayOutputStream()
    exec {
        commandLine 'git', 'describe', '--tags'
        standardOutput = stdout
    }
    return stdout.toString().trim()
}
ext{
    VERConsts = [:]
    VERConsts['NAME'] = getVersionName()
    VERConsts['NAME_CALL'] = getVersionName
}

Тогда в вашем build.gradle файл:

apply from: 'other.gradle'
// ...
android {
    defaultConfig {
        versionName VERConsts['NAME_CALL']()
        // or
        versionName VERConsts['NAME']
    }
}

Тогда versionName будет иметь результат вызова.

Заметки:

  • VERConsts['NAME'] = getVersionName() позвоню getVersionName() и хранить свой результат. Используя его в вашем сценарии, например versionName VERConsts['NAME'] Затем назначит хранящее значение.
  • VERConsts['NAME_CALL'] вместо этого хранит ссылку на функцию. С использованием VERConsts['NAME_CALL']() В вашем скрипте фактически вызовет функцию и назначит результат вашей переменной

Первый приведет к тому, что одно и то же значение будет назначено через скрипт, в то время как последнее может привести к различным значениям (например, если кто -то выталкивает другую версию во время работы вашего скрипта).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top