Определение собственного настраиваемого хранилища maven в скрипте сборки gradle для Android - PullRequest
0 голосов
/ 21 декабря 2018

Я знаю, что репозитории Maven можно добавить обычным способом, используя что-то похожее на следующий фрагмент:

allprojects {
    repositories {
        mavenLocal()
        google()
        jcenter()
    }
}

Однако, чего я хотел бы добиться, так это на самом деле создать свою собственную запись репозитория Maven.Таким образом, добавление к приведенному выше примеру может выглядеть примерно так:

allprojects {
    repositories {
        mavenLocal()
        google()
        jcenter()
        myNewRepo()
    }
}

Обратите внимание, что «myNewRepo» - это новый репозиторий, который был добавлен внизу.Если я просто добавлю строку, как показано выше, я получу следующую ошибку из gradle.

Не удалось найти метод myRepo () для аргументов [] в контейнере репозитория типа org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.

Моя причина для этого заключается в том, что у меня есть список из нескольких моих собственных репозиториев Maven, и для каждого из этих приложений становится обременительным иметь все эти записи для всех моих приложений.,Например, моя текущая реализация выглядит следующим образом.

allprojects {
    repositories {
        mavenLocal()
        google()
        jcenter()
        maven {
            url: "some url"
            name: "some name"
        }
        maven {
            url: "some url"
            name: "some name"
        }
        maven {
            url: "some url"
            name: "some name"
        }
        maven {
            url: "some url"
            name: "some name"
        }
        maven {
            url: "some url"
            name: "some name"
        }
    }
}

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

Моя другая мотивация заключается в том, что я хотел бы иметь возможность добавить некоторые из этих maven-репозиториев условно на основе некоторого входного свойства, предоставленного gradle, например

gradle -Puse_repo=true <task>.

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

Спасибо!

1 Ответ

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

Я не думаю, что вы действительно можете добавить новую запись, такую ​​как jcenter(), поскольку эти записи по сути являются просто методами встроенного интерфейса RepositoryHandler.

Однако,если вы просто пытаетесь переместить свои собственные конфигурации репозитория в отдельный метод / замыкание, то вы можете выбрать один из следующих вариантов:

def myNewRepos = {
    maven {
        url = "some url"
        name = "some name"
    }
    if (project.hasProperty('use_repo')
          && project.property('use_repo') == 'true') {
        maven {
            url = "some other url"
            name = "some other name"
        }
    }
    // ... any others ...
}

/* OPTION 1: */
repositories {
    mavenLocal()
    // ... any others ...
}
repositories myNewRepos

/* OPTION 2: */
repositories {
    mavenLocal()
    // ... any others ...

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