如何在gradle 2.2+中指定root项目中checkstyle配置的相对路径

fra*_*acz 8 checkstyle gradle

我有以下项目结构:

project
  checkstyle
    checkstyle.xml
  subproject1
    ...
  subproject2
    ...
  build.gradle
Run Code Online (Sandbox Code Playgroud)

我在checkstyle中的配置build.gradle如下:

allprojects {
  apply plugin: 'checkstyle'
  checkstyle {
    configFile = 'checkstyle/checkstyle.xml' as File
  }
}
Run Code Online (Sandbox Code Playgroud)

当我使用gradle 2.1时,构建工作正常.升级到2.2或2.2.1后,会发生错误:

:subproject1:checkstyleMain FAILED
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':subproject1:checkstyleMain'.
> Unable to create a Checker: unable to find /home/my/project/subproject1/checkstyle/checkstyle.xml
Run Code Online (Sandbox Code Playgroud)

Gradle现在在子项目目录中寻找'checkstyle/checkstyle.xml',这不是我所期望的.

我发现他们在2.2发行说明中提到了这个变化.但他们没有告诉如何保持解决这条道路的旧行为.这该怎么做?

我尝试使用project.file但它也不起作用.

Ren*_*hke 13

在你的片段中

allprojects {
  apply plugin: 'checkstyle'
  checkstyle {
    configFile = 'checkstyle/checkstyle.xml' as File
  }
}
Run Code Online (Sandbox Code Playgroud)

您将每个项目的配置文件配置为您当前正在配置的子项目的相对位置.你可以通过替换来解决这个问题

checkstyle {
    configFile = 'checkstyle/checkstyle.xml' as File
}
Run Code Online (Sandbox Code Playgroud)

通过

checkstyle {
    configFile = rootProject.file('checkstyle/checkstyle.xml')
}
Run Code Online (Sandbox Code Playgroud)