2017-10-12 2 views
1

Je suis en cours d'exécution d'un comportement bizarre avec gradle (emballage multiprojet):Gradle: Importation classe plugins à partir du script appliqué

ma racine build.gradle fichier

plugins { 
    // Docker plugin 
    id "de.gesellix.docker" version "2017-10-05T23-00-11" 
} 

une aide de script java-docker.gradle

apply plugin: "de.gesellix.docker" 

import de.gesellix.gradle.docker.tasks.DockerBuildTask 
import de.gesellix.gradle.docker.tasks.DockerTask 

task prepareDockerImage(type: DockerBuildTask, dependsOn: war) { 
    // Task here 
} 

et mon application build.gradle:

apply from: "${gradleDirPath}/java-docker.gradle" 
apply from: "${gradleDirPath}/java-webapp.gradle" 

dependencies { 
    // App dependencies 
} 

lors de l'exécution ./gradlew help je tombe:

incapable de résoudre la classe de.gesellix.gradle.docker.tasks.DockerTask
@ ligne 6, colonne 1. importation de.gesellix.gradle.docker .tasks.DockerTask

et

incapable de résoudre la classe de .gesellix.gradle.docker.tasks.DockerBuildTask @ ligne 5, colonne 1. importation de.gesellix.gradle.docker.tasks.DockerBuildTask

J'ai essayé de retirer le apply from: "${gradleDirPath}/java-docker.gradle" de l'application et build.gradle directement appliquer le plugin et importe directement dans l'application build.gradle, et cela fonctionne comme prévu.

Une idée de l'échec de l'importation à partir d'un script appliqué?

+0

Pourriez-vous s'il vous plaît fournir une structure de répertoires? – Opal

Répondre

1

Le problème était que le nouveau mécanisme de plugin n'ajoute pas les classes du plugin aux scripts classpath. Ils sont uniquement disponibles pour la racine build.gradle et les projets build.gradle.

donc je devais revenir à l'ancien mécanisme de buildscript

mon java-docker.gradle ressemble maintenant:

buildscript { 
    repositories { 
    maven { 
     url "https://plugins.gradle.org/m2/" 
    } 
    } 
    dependencies { 
    classpath "de.gesellix:gradle-docker-plugin:2017-10-05T20-48-17" 
    } 
} 

apply plugin: de.gesellix.gradle.docker.DockerPlugin 

import de.gesellix.gradle.docker.tasks.DockerBuildTask 
import de.gesellix.gradle.docker.tasks.DockerTask 

J'ai aussi enlevé l'entrée des plug-ins pour docker dans ma racine build.gradle

Modifier pour opal

ma structure de répertoire ressemble à:

. 
├── buildsystem 
│ ├── build.gradle 
│ ├── gradle 
│ │ └── java-docker.gradle 
│ ├── gradle.properties 
│ ├── gradlew 
│ ├── gradlew.bat 
│ ├── README.md 
│ └── settings.gradle 
└── myapp 
    ├── build.gradle 
    └── settings.gradle