Как извлечь buildscript из build.gradle - PullRequest
0 голосов
/ 27 июня 2018

В моем build.gradle есть следующий раздел buildscript:

buildscript {
    ext {
        nexusUrl = project.hasProperty("myNexusUrl") ? myNexusUrl : "http://10.199.0.99:8081/repository/maven-public/"
    }
    repositories {
        maven { url nexusUrl }
    }
    dependencies {
        classpath group: 'mygroup', name: 'MyGradleLibrary', version: '1.0.1'
    }
}

Как извлечь этот код из внешнего файла, чтобы он не нарушал сборку?

1 Ответ

0 голосов
/ 28 декабря 2018

Создайте плагин из вашей библиотеки и опубликуйте его на этом Nexus. Затем добавьте эти строки в ваш settings.gradle:

pluginManagement {
    repositories {
        maven {
            url "…"
        }
        gradlePluginPortal()
    }

    resolutionStrategy {
        eachPlugin {
            if (requested.id.namespace == 'mygroup.gradle-library') {
                useModule('mygroup.gradle-library:1.0.1')
            }
        }
    }
}

Здесь вы заявляете, что хотите заменить плагин mygroup.gradle-library зависимостью mygroup.gradle-library:1.0.1.

Тогда просто добавьте плагин в ваш build.gradle:

plugins {
    id 'mygroup.gradle-library'
}

Теперь у вас есть зависимость от пути к классу сборки без блока buildscript.


EDIT

Чтобы применить это к всем вашим проектам, поместите эти строки в init script ~/.gradle/init.gradle ($GRADLE_USER_HOME/init.gradle):

settingsEvaluated {
    pluginManagement {
        repositories {
            maven {
                url "…"
            }
            gradlePluginPortal()
        }

        resolutionStrategy {
            eachPlugin {
                if (requested.id.namespace == 'mygroup.gradle-library') {
                    useModule('mygroup.gradle-library:1.0.1')
                }
            }
        }
    }
}

После этого plugin блоки должны работать. Тем не менее, это будет работать только для вас, но не для ваших товарищей по команде, если они не делают то же самое.

Если вам не нравится plugins, вы все равно можете выполнить «глобальную» настройку через скрипты инициализации, как показано. Подробнее о доступных API.

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