自定义 Gradle 插件在多项目构建中仅执行一次

我用 Java 编写了一个 gradle 插件,我想在多项目 gradle 设置中使用它。插件附带的任务只执行一次,我不明白为什么。


项目的结构如下所示:


Root project

     |- settings.gradle

     |- build.gradle

     |- project1

     |     |- build.gradle

     |- project2

     |     |- build.gradle

     |- project3

     |     |- build.gradle

     ...

根 build.gradle 看起来像这样


buildscript {

repositories {

    jcenter()

    maven { url "https://repo.spring.io/plugins-snapshot" }

    maven { url "https://repo.spring.io/plugins-release" }


    maven{

        url = "https://my-personal-nexus.de/content/repositories/release/"

    }

    ....

    dependencies {

       ....

       classpath "de.mystuff:myCustomPlugin:1.0.0"

    }

  }

}

subprojects {

   apply plugin: "myCustomPlugin"

   ....

}

插件“myCustomPlugin”提供了一个名为 myTask 的任务。由于插件应用于 build.gradle 的子项目部分,我假设当我调用时:


./gradlew myTask

该任务将为 project1、project2、project3 执行。


实际上,该任务仅在 project1 中执行,而不在 project2 或 project3 中执行。如果我打电话


./gradlew -p "project2" myTask

该任务在项目2中执行得很好。关于为什么没有为每个子项目执行任务的任何提示?


当我打电话


 ./gradlew tasks --all

结果显示每个子项目的任务。


DIEA
浏览 117回答 1
1回答

慕标5832272

解决方案:当您在任务中调用静态方法时,似乎 gradle 不喜欢它。在我切换到类初始化之后,它起作用了。谢谢@M.Ricciuti
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java