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

如何在gradle 2.2+中的根项目中指定checkstyle配置的相对路径;,gradle,checkstyle,Gradle,Checkstyle,我有以下项目结构: project checkstyle checkstyle.xml subproject1 ... subproject2 ... build.gradle 我在build.gradle中对checkstyle的配置如下: allprojects { apply plugin: 'checkstyle' checkstyle { configFile = 'checkstyle/checkstyle.xml' as F

我有以下项目结构:

project
  checkstyle
    checkstyle.xml
  subproject1
    ...
  subproject2
    ...
  build.gradle
我在
build.gradle
中对checkstyle的配置如下:

allprojects {
  apply plugin: 'checkstyle'
  checkstyle {
    configFile = 'checkstyle/checkstyle.xml' as File
  }
}
当我使用Gradle2.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
Gradle现在正在子项目目录中查找“checkstyle/checkstyle.xml”,这不是我所期望的

我发现了。但他们并没有告诉我们如何保持解决这条路径的旧行为。如何做到这一点


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

请尝试替换:

configFile = 'checkstyle/checkstyle.xml' as File
与:

试试看是否有效

如前所述,
configFile
被替换为。无法尝试,但可能:

config = 'checkstyle/checkstyle.xml' as File
是否有效?

在您的代码片段中

allprojects {
  apply plugin: 'checkstyle'
  checkstyle {
    configFile = 'checkstyle/checkstyle.xml' as File
  }
}
将每个项目的configfile配置为与当前配置的子项目相对。您可以通过替换

checkstyle {
    configFile = 'checkstyle/checkstyle.xml' as File
}


有一种更简单的方法可以做到这一点。试试这个。它将负责创建所有配置文件(checkstyle.xml、import-control.xml、suppressions.xml和header.txt)。你所要做的就是在你的gradle构建文件中使用这个插件。如果需要任何自定义规则,可以直接将它们添加到gradle任务中

以下是您需要开始的内容:

buildscript {
  repositories {
    mavenCentral()
  }

  dependencies {
    classpath 'net.anshulverma.gradle:gradle-estilo-plugin:0.4.8'
  }
}

apply plugin: 'net.anshulverma.gradle.estilo'

estilo {
  source 'sun'
}

在此之后,您可以修改检查、添加抑制、编辑导入控件并直接从
estilo{}
块添加头文件。有关如何执行此操作的详细信息以及包括提示在内的详细信息,请参见。

但请稍候。。那么:
('checkstyle/checkstyle.xml'作为文件)。absolutePath
?不幸的是,Rene的解决方案更干净:-)好的,但是它没有直接回答问题。Rene的解决方案将适用于gradle 2.1和2.2。您的配置停止使用新版本的gradle,我解释了原因(希望如此,我无法检查)-我的意思是
config
vs
configFile
.Hmm。。但在gradle的早期版本中,它工作得很好,为什么?2.2的发行说明中提到了这一变化:我发现对于pmd配置,只需使用
文件('xxx)
,就可以很好地工作,但checkstyle没有
checkstyle {
    configFile = rootProject.file('checkstyle/checkstyle.xml')
}
buildscript {
  repositories {
    mavenCentral()
  }

  dependencies {
    classpath 'net.anshulverma.gradle:gradle-estilo-plugin:0.4.8'
  }
}

apply plugin: 'net.anshulverma.gradle.estilo'

estilo {
  source 'sun'
}