java - Gradle:从应用脚本导入插件类

标签 java gradle plugins import

我正在使用 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/

相关文章:

java - 请帮助查找 XPath :

android - 在 Android gradle 项目中使用 junit 类别对 robolectric 测试进行分组

android - 如何从 fresco(facebook 的 android lib)中排除 arm64-v8a 目录

java - 如何从 build.gradle 中的 settings.gradle 继承方法

c - 如何在 NPAPI C 插件中获取 NPP 实例

java - 使用 withColumn 和 callUDF 将列附加到数据框

java - 如何从类构造函数创建数组?

java - 没有 GWTquery 函数正在运行

android - Cordova android 插件调试

css - 如何命名基 css 类以便其他用户可以轻松关联