Gradle idea NPE修改ipr文件

时间:2014-01-23 15:26:47

标签: intellij-idea nullpointerexception gradle

我的build.gradle中有以下一个子子模块:

apply plugin: 'war'
apply plugin: 'idea'

dependencies {
  compile project(':x')
  compile project(':y')
  compile project(':z')
}

idea {
  module.iml.withXml {
    // do some stuff
  }
  project.ipr.withXml {
    // do some more stuff
  }
}

但是当我运行gradle build时,我收到以下错误:

A problem occurred evaluating project ':a:b'
  ...
Caused by: java.lang.NullPointerException: Cannot get property 'ipr' on null object
  ...

在我打电话project.ipr的行。奇怪的是,如果我删除apply plugin: 'idea'行,则错误消失,当我运行gradle idea时,上面的闭包中指定的任务将被执行(我认为因为该插件应用于父项目)。

为什么会发生这种错误?我该如何解决?

1 个答案:

答案 0 :(得分:3)

Rookie错误:project属性仅在模块是根模块时才可用。说得通。我能够使用:

从子模块修改ipr文件
rootProject.idea.project.ipr.withXml { /* modify ipr */ }