2016-05-01 34 views
0

build.gradle如何通過gradle插件修改配置?

apply plugin: 'com.android.application' 

android { 
    defaultConfig { 
     applicationId propAppcationId 
    } 
} 

我的插件:

public class AudioMaterialAppConstructorPlugin implements Plugin<Project> { 
    @Override 
    public void apply(Project project) { 
     Task constructAudioMaterialApp = project 
       .getTasks() 
       .create("constructAudioMaterialApp", ConstructAudioMaterialAppTask.class); 
     project.getTasks().getByName("preBuild").dependsOn(constructAudioMaterialApp); 
    } 
} 

我的自定義任務:

public class ConstructAudioMaterialAppTask extends DefaultTask { 

    @TaskAction 
    public void constructAudioMaterialApp() { 
     getProject().setProperty("propAppcationId", "demo.project.id"); 
    } 

} 

我想build task之前改變applicationId。正如你所看到的,我試圖通過財產做到這一點,但它不起作用。我如何管理這種情況?

回答

1

它不起作用,因爲配置在配置階段被解析並且任務在執行階段(之後)被執行。

您可以在插件應用方法中添加屬性作爲替代。我認爲它也應該在任務構造函數中工作,但我不是100%確定的。

+1

謝謝!我使用了插件的'apply'方法,它可以工作:'@Override public void apply(Project project){project.setProperty(「propAppcationId」,「demo.project.id」); }' – Alexandr