簡體   English   中英

將額外的屬性傳遞給gradle任務的問題

[英]Issues in passing extra properties to a gradle task

我在將額外的屬性傳遞給gradle任務時遇到了麻煩。 這是我的構建文件

buildscript {
    repositories {
}


ext {
    dir = ''
}

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'groovy'

group = 'group'
version = 'version'

sourceCompatibility = 1.8
targetCompatibility = 1.8

task wrapper(type: Wrapper) {
    gradleVersion = '3.4'
}

repositories {

}
dependencies {
    compile gradleApi()
    compile localGroovy()

}

如您所見,我有一個額外的屬性,dir初始化為。 現在,這是我的任務

class MyTask extends DefaultTask {
    File myDir = project.dir

    @TaskAction
    public void action() {
    }
}

我的插件

class MyPlugin implements Plugin<Project> {
    @Override
    def void apply(Project project) {
        project.tasks.create("myTask", MyTask)
    }

}

而這個單元測試

public class TestPlugin {
    @Test
    public void testPlugin() {
        Project project = ProjectBuilder.builder().build();
        project.getPlugins().apply(TestPlugin.class);
        Assert.assertTrue(project.getProject().getTasks().findByName("myTask") instanceof MyTask);
    }
}

現在,當我運行測試時,它顯示了找不到dir屬性的錯誤。

Caused by: groovy.lang.MissingPropertyException 

我想念什么嗎?

您的build.gradle腳本和測試沒有任何鏈接。 在測試中,您將創建一個干凈的新項目,並且要做的第一件事(也是唯一的一件事情)是應用自定義插件,然后創建自定義任務。 將設置任務屬性myDir ,但是項目中不存在被調用的屬性dir ,因此將引發異常。

您可以為測試項目定義額外的屬性dir ...

Project project = ProjectBuilder.builder().build();
project.ext.dir = ''
project.getPlugins().apply(TestPlugin.class);
Assert.assertTrue(project.getProject().getTasks().findByName("myTask") instanceof MyTask);

...或將新插件應用於build.gradle腳本的項目(完成后)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM