以编程方式更新intellij插件

时间:2015-07-08 01:43:44

标签: java android intellij-idea build.gradle intellij-plugin

我正在为intellij编写一个插件,我想以编程方式更改Intellij项目的build.gradle文件。

我想添加

sourceSets {
    resources {
        srcDir 'src/resources'
    }
}

在build.gradle文件中的android对象内(这是一个android项目)

我意识到我必须做一些事情

GradleBuildFile gradleBuildFile = GradleBuildFile.get(module);
GrStatementOwner closure = gradleBuildFile.getClosure("android/sourceSets/main/resources");
gradleBuildFile.setValue(closure, BuildFileKey.SRC_DIR, "blah");

问题是,没有BuildFileKey.SRC_DIR,我找不到类似的东西。

另外,如果在build.gradle文件中没有sourceSets对象,它会添加吗?

有什么建议吗?

由于

更新 或者,有没有办法将文件夹标记为资源文件夹?我不想使用默认的res文件夹。也许使用AndroidFacet对象..

1 个答案:

答案 0 :(得分:0)

好问题。我需要做同样的事情,但是一直在使用粗糙的FileWriter。只要有效:S

public void actionPerformed(AnActionEvent event) {

    Project project = event.getProject();
    String buildFilePath = project.getBasePath() + "\\app\\build.gradle";

    BufferedReader br_build = new BufferedReader(new FileReader(buildFilePath));

    String newBuildFile = "";
    String line;

    while ((line = br_build.readLine()) != null) {
        newBuildFile += line + "\n";
        if (line.contains("android {")){
            newBuildFile += "// Add your stuff here\n" +
                    "sourceSets {\n" +
                    "    resources {\n" +
                    "        srcDir 'src/resources'\n" +
                    "    }\n" +
                    "}\n";
        }
    }
    br_build.close();

    FileWriter fw_build = new FileWriter(buildFilePath);
    fw_build.write(newBuildFile);
    fw_build.close();
}