如何从自定义gradle插件执行任务

时间:2018-02-13 16:04:04

标签: gradle

背景: -

我创建了一个gradle插件,说XXX,其中有

1)在 实现org.gradle.api的插件接口 的软件包中 一个groovy类 。插件,并且在重写的apply方法中,我编写了与git相关的功能,

2)在插件XXX的build.gradle中,我有另一个 任务 作为 confluence ,这是实施的使用插件" com.github.qwazer.markdown-confluence"

XXX Plugin
    |_______ com.gradle.plugin.gitFunctionality
    |                       |________________ gitFunctionality(groovy class)
    |_______ build.gradle

XXX插件的build.gradle

gradlePlugin {
    plugins {
        "gradle-plugin-XXX" {
            id = "com.gradle.plugin.gitFunctionality"
            implementationClass = "com.gradle.plugin.gitFunctionality.ReportPlugin"
        }
    }
}
.
.
.
.
confluence {

    //upload page to confluence
.
.
}

现在我可以在maven.publish插件的publishToMavenLocal的帮助下在本地测试插件实现,我已经在项目中的一个项目中输入了插件' ABCD'来自当地的maven

问题

1)当我尝试运行命令./gradlew build publishToMavenLocal时,它只运行第一个git功能而不是汇合为什么?我希望运行在reportPlugin和confluence任务中编写的gitFunctionality,但我可以看到为git打印的输出

2)在项目ABCD中导入插件后如果我想执行这两个任务/插件作为项目ABCD的最后一个任务我该怎么做。

1 个答案:

答案 0 :(得分:0)

您可以使用dependsOn,finalizedBy和其他一些功能更改任务执行顺序。

例如,您可以在运行gradle build之后执行必要的任务:

@Service
public class StorageServiceImpl implements StorageService {

void init(){// You code goes here/}

void store(MultipartFile file){///}

Stream<Path> loadAll(){///}

Path load(String filename){//}

Resource loadAsResource(String filename){///}

}