#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:
- Артефакт маркера плагина
- Сам JAR плагина Gradle
Оба артефакта создаются для вас плагином разработки плагина Java Gradle. Если вы не используете плагин, вам нужно будет самостоятельно создать артефакт маркера плагина.