如何在 gradle 2.2+ 的根项目中指定 checkstyle 配置的相对路径
How to specify relative path to checkstyle config in root project in gradle 2.2+
我有以下项目结构:
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
但它也不起作用。
能否请您尝试更换:
configFile = 'checkstyle/checkstyle.xml' as File
与:
configFile = ('checkstyle/checkstyle.xml' as File).absolutePath as File
试试是否有效?
如前所述here configFile
is replaced with config。不能尝试,但也许:
config = 'checkstyle/checkstyle.xml' as File
有用吗?
在您的代码段中
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')
}
有一种更简单的方法可以做到这一点。试试 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。
我有以下项目结构:
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
但它也不起作用。
能否请您尝试更换:
configFile = 'checkstyle/checkstyle.xml' as File
与:
configFile = ('checkstyle/checkstyle.xml' as File).absolutePath as File
试试是否有效?
如前所述here configFile
is replaced with config。不能尝试,但也许:
config = 'checkstyle/checkstyle.xml' as File
有用吗?
在您的代码段中
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')
}
有一种更简单的方法可以做到这一点。试试 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。