我正在使用 gradle(多项目包装器)运行一个奇怪的行为:
我的根build.gradle
文件
plugins {
// Docker plugin
id "de.gesellix.docker" version "2017-10-05T23-00-11"
}
脚本助手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
}
和我的应用程序build.gradle
:
apply from: "${gradleDirPath}/java-docker.gradle"
apply from: "${gradleDirPath}/java-webapp.gradle"
dependencies {
// App dependencies
}
运行./gradlew help
时我遇到:
unable to resolve class de.gesellix.gradle.docker.tasks.DockerTask
@ line 6, column 1. import de.gesellix.gradle.docker.tasks.DockerTask
和
unable to resolve class de.gesellix.gradle.docker.tasks.DockerBuildTask @ line 5, column 1. import de.gesellix.gradle.docker.tasks.DockerBuildTask
我尝试从应用程序 build.gradle
中删除 apply from: "${gradleDirPath}/java-docker.gradle"
并直接应用插件和直接在应用 build.gradle
中导入,并且这正在按预期工作。
知道为什么从应用的脚本导入失败吗?
最佳答案
问题是新的插件机制没有将插件类添加到脚本类路径中。它们仅适用于根 build.gradle
和项目 build.gradle
。
所以我不得不回到旧的构建脚 native 制
我的java-docker.gradle
现在看起来像:
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
我还删除了根目录中 docker 的插件条目 build.gradle
编辑 opal
我的目录结构如下:
.
├── buildsystem
│ ├── build.gradle
│ ├── gradle
│ │ └── java-docker.gradle
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── README.md
│ └── settings.gradle
└── myapp
├── build.gradle
└── settings.gradle
关于java - Gradle:从应用脚本导入插件类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46712634/