Использование плагина Gradle из пользовательского репозитория Maven

#java #maven #gradle

#java #maven #gradle

Вопрос:

Я работаю в ограниченной среде разработки, которая использует частный репозиторий Maven. В нем размещен плагин Gradle, который я пытаюсь использовать. Однако я не думаю, что он соответствует ожидаемым именам и структуре каталогов для плагинов Gradle, поэтому моя сборка завершается неудачно, когда я использую плагин DSL. В репозитории Maven плагин структурирован как что-то вроде:

 com.mydomain.project:mydomain-plugin:1.0.0
 

Когда я ссылаюсь на этот плагин, используя DSL плагина Gradle, используя следующее определение:

 plugins {
    id 'com.mydomain.project' version '1.0.0'
}
 

Я получаю сообщение об ошибке с моей сборкой, жалуясь, что она не может найти com.mydomain.project:com.mydomain.poject.gradle.plugin:1.0.0 . Однако, похоже, нет способа через DSL плагина указать, что плагин использует другой шаблон идентификатора артефакта. Есть идеи, как это решить?

Ответ №1:

Вы можете использовать pluginManagement { } для указания дополнительных репозиториев для плагинов Gradle.

 pluginManagement {
    repositories {
        maven {
            url 'https://my-company-maven-repo.com/'
        }
        gradlePluginPortal()
    }
}
 

Для получения более подробной информации см. Пользовательские репозитории плагинов.

Это первый шаг, во-вторых, вам нужно убедиться, что вы публикуете два артефакта, чтобы использовать plugins { } DSL:

  1. Артефакт маркера плагина
  2. Сам JAR плагина Gradle

Оба артефакта создаются для вас плагином разработки плагина Java Gradle. Если вы не используете плагин, вам нужно будет самостоятельно создать артефакт маркера плагина.