[英]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.