我有以下项目结构:
project
checkstyle
checkstyle.xml
subproject1
...
subproject2
...
build.gradle
我在build.gradle
中对checkstyle的配置如下:
allprojects {
apply plugin: 'checkstyle'
checkstyle {
configFile = 'checkstyle/checkstyle.xml' as File
}
}
当我使用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
Gradle现在正在寻找&checkstyle / checkstyle.xml'在子项目目录中,这不是我所期望的。
我发现they mentioned this change in 2.2 release notes。但他们没有告诉如何保持解决这条道路的旧行为。怎么做?
我尝试使用project.file
,但它也不起作用。
答案 0 :(得分:13)
allprojects {
apply plugin: 'checkstyle'
checkstyle {
configFile = 'checkstyle/checkstyle.xml' as File
}
}
您将每个项目的配置文件配置为与您当前正在配置的子项目相对。你可以通过替换
解决这个问题checkstyle {
configFile = 'checkstyle/checkstyle.xml' as File
}
通过
checkstyle {
configFile = rootProject.file('checkstyle/checkstyle.xml')
}
答案 1 :(得分:2)
请你试试替换:
configFile = 'checkstyle/checkstyle.xml' as File
使用:
configFile = ('checkstyle/checkstyle.xml' as File).absolutePath as File
并尝试它是否有效?
如上所述,here configFile
已替换为config。不能尝试但可能:
config = 'checkstyle/checkstyle.xml' as File
会起作用吗?
答案 2 :(得分:1)
有一种更简单的方法可以做到这一点。试试gradle-estilo-plugin
。它将负责创建所有配置文件(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 { }
块添加头文件。有关如何执行此操作的详细信息以及详细信息(包括提示),请参阅README。