Иконка ресурса

Автоматическая подмена ссылок на maven репозитории

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

В этом мире нет ничего надёжнее кроме maven central и собственных репозиториев. Приведённая ниже небольшая модификация конфигурации Gradle позволит динамически подменять URL репозиториев во всех проектах на свои. Работает даже со ссылками «захардкожеными» в плагинах.

Создайте файл init.d/maven-mirror.gradle в Gradle User Home.
Gradle (Groovy):
// Источник: Замена
// URL источника без / на конце!
// Ссылки приведены для примера. Нужно заполнить своими.
def repositoryMappings = [
    "https://files.minecraftforge.net/maven": "https://maven.minecraftforge.net",
    "https://su5ed.jfrog.io/artifactory/maven": "https://maven.su5ed.dev/releases/",
]
def enableMirror = { repositories ->
    repositories.all { repository ->
        if (repository instanceof MavenArtifactRepository) {
            def originalUrl = repository.url.toString()
                .replace('http://', 'https://')
                .replaceAll("/\$", '')
            if (repositoryMappings.containsKey(originalUrl)) {
                def mirroredUrl = repositoryMappings[originalUrl]
                logger.lifecycle("Repository '${repository.url}' is mirrored to '${mirroredUrl}'")
                repository.setUrl(mirroredUrl)
            }
        }
    }
}
gradle.allprojects {
    buildscript {
        enableMirror(repositories)
    }
    enableMirror(repositories)
}
gradle.settingsEvaluated { settings ->
    settings.pluginManagement {
        enableMirror(repositories)
    }
}

Свой репозиоторий​

Ссылки на сторонние репозитории можно заменять своими proxy-репозиториями.
Maven proxy-репозиторий — это посреднический репозиторий, который кэширует артефакты из внешних Maven-репозиториев.
  • Если нужного артефакта нет, proxy скачивает его из внешнего репозитория и сохраняет у себя.
  • При следующих запросах артефакт выдаётся из кэша.

Организовать свой приватный репозиторий можно путём развёртывания следующего программного обеспечения на своём сервере (рассмотрены только бесплатные варианты):
  1. Sonatype Nexus Repository – мощный комбайн, поддерживает maven2 и множество других форматов репозиториев.
  2. Reposilite – минимальный функционал, простая настройка, заточен исключительно под maven формат.
✅ Оба варианта поддерживают создание proxy-репозиториев.
Автор
TheAndrey
Просмотры
113
Первый выпуск
Обновление
Оценка
5.00 звёзд 1 оценок

Другие ресурсы пользователя TheAndrey

Последние рецензии

Хороший сниппет. Спасибо что поделился 👍
Назад
Сверху