以编程方式更新intellij插件中的build.gradle

Kar*_*rim 7 java android intellij-idea intellij-plugin build.gradle

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

我想补充一下

sourceSets {
    resources {
        srcDir 'src/resources'
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

此外,sourceSets如果在build.gradle文件中没有该对象,是否会添加该对象?

有什么建议?

谢谢

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

小智 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();
}
Run Code Online (Sandbox Code Playgroud)