Ваш проект плагина должен быть настроен как автономный проект плагина, а затем опубликован в репозитории maven, что сделает работу по разрешению зависимостей; есть хорошая документация по написанию пользовательского плагина здесь , особенно следующая часть: с использованием плагина разработки плагина Gradle
Существует также хороший пример написания / публикации / использования пользовательского плагина в примерах Gradle: https://github.com/gradle/gradle/tree/master/subprojects/docs/src/samples/plugins (см. Два подпроекта publishing
и consuming
)
А вот рабочий пример с плагином, который зависит от внешней библиотеки (например, commons-lang):
Плагин проекта
build.gradle
plugins {
id 'java-gradle-plugin'
id 'groovy'
id 'maven-publish'
}
group 'org.gradle.sample.plugin'
version '0.1'
// pugin metadata configuration
gradlePlugin {
plugins {
myplugin {
id = "org.gradle.sample.plugin.myplugin"
implementationClass = "org.gradle.sample.plugin.MyPlugin"
}
}
}
// publish to local maven repo for testing
publishing {
repositories {
maven {
url "../repos/maven-repo"
}
}
}
// repo for dependences resolution
repositories{
jcenter()
}
// dependencies of this plugin
dependencies {
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.8.1'
}
Реализация плагина : src/main/groovy/org/gradle/sample/plugin/MyPLugin.groovy
package org.gradle.sample.plugin
import org.apache.commons.lang3.StringUtils
import org.gradle.api.Plugin
import org.gradle.api.Project
class MyPlugin implements Plugin<Project> {
@Override
void apply(final Project project) {
println "Applying custom plugin... "
project.tasks.create('testPlugin'){
doLast{
println " custom plugin task executing."
println "Result: " + StringUtils.capitalize("stringtotest")
}
}
}
}
Постройте и опубликуйте этот плагин ./gradlew publish
: банку плагина и «артефакты маркера плагина» будут опубликованы в локальном репозитории maven в .. / repos / maven-repo
Потребительский проект
build.gradle
plugins {
id 'java'
// import/apply your custom plugin
id 'org.gradle.sample.plugin.myplugin' version '0.1'
}
group 'org.gradle.sample.plugin'
version '0.1'
repositories{
maven {
url "../repos/maven-repo"
}
jcenter()
}
Чтобы протестировать плагин, попробуйте выполнить задачу плагина testPlugin
> Task :testPlugin
custom plugin task executing.
Result: Stringtotest