Ответ 1
Вот базовый автономный Java-модуль Gradle и шаги для его работы:
- Убедитесь, что Gradle 1,6 или более поздней версии и установлен Java JDK
- Создайте эти файлы ниже с указанной структурой каталогов
- Измените каталоги на каталог
<projectRoot>/plugin
- Выполнение сборки плагина:
$ gradle uploadArchives
Этот (очень важный) шаг компилирует код Java и помещает его в локальный репозиторий Maven (../repo). - Теперь выполните пользователя script, изменив каталоги на
<projectRoot>/consumer
- Выполните script, который зависит от плагина:
$ gradle checkitout
Классы Java
projectRoot/плагин/SRC/Основной/Java/орг/joefernandez/ gradle/MyJavaPlugin.java
package org.joefernandez.gradle;
import org.gradle.api.Project;
import org.gradle.api.Plugin;
public class MyJavaPlugin implements Plugin<Project> {
@Override
public void apply(Project target) {
target.task("javaTask");
}
}
projectRoot/плагин/SRC/Основной/Java/орг/joefernandez/ gradle/MyJavaTask.java
package org.joefernandez.gradle;
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;
public class MyJavaTask extends DefaultTask {
@TaskAction
public void javaTask() {
System.out.println("Hello from MyJavaTask");
}
}
Объявление класса плагинов
projectRoot/плагин/SRC/основная/ресурсы/META-INF/ gradle -plugins/test-plugin.properties
implementation-class=org.joefernandez.gradle.MyJavaPlugin
Плагин Build Script
Обратите внимание на задачу uploadArchives: вы должны запустить эту задачу, чтобы сделать плагин доступным для пользователя script.
projectRoot/плагин/build.gradle
apply plugin: 'java'
dependencies {
compile gradleApi()
}
apply plugin: 'maven'
repositories {
mavenCentral()
}
dependencies {
testCompile 'junit:junit:4.11'
}
group = 'org.joefernandez'
version = '1.0-SNAPSHOT'
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('../repo'))
}
}
}
Настройки для плагина
projectRoot/плагин/settings.gradle
rootProject.name = 'MyJavaPlugin'
Корень Script
projectRoot/build.gradle
apply plugin: 'java'
dependencies {
compile gradleApi()
}
Потребитель Script
projectRoot/потребитель/build.gradle
buildscript {
repositories {
maven {
url uri('../repo')
}
}
dependencies {
classpath group: 'org.joefernandez',
name: 'MyJavaPlugin',
version: '1.0-SNAPSHOT'
}
}
apply plugin: 'test-plugin'
task checkitout(type: org.joefernandez.gradle.MyJavaTask) {
println("running consumer task!")
}