这是一个在 IntellJ 上新建的空 Gradle/Groovy 项目上设置的 build.gradle 示例。我在这里在两个地方使用 projectDir:任务定义和任务类定义。IntelliJ 向我显示第一次使用不正确 - 无法解析符号。它认为第二次使用是正确的。
group 'test'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'groovy'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.3.11'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
task ProjectDirTest(type: ProjectDirTestClass){
println " -------------- $projectDir from task"
}
class ProjectDirTestClass extends DefaultTask {
@TaskAction
def greet() {
println " -------------- $projectDir from class"
}
}
configure(ProjectDirTest) {
group = 'ProjectDirTest'
description = 'ProjectDirTest'
}
但是如果我运行任务,第一个 println 工作正常,输出正确:
12:55:41: Executing external task 'ProjectDirTest'...
-------------- C:\Users\543829657\testWorkspace from task
:ProjectDirTest FAILED
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\Users\543829657\testWorkspace\build.gradle' line: 28
* What went wrong:
Execution failed for task ':ProjectDirTest'.
> Could not get unknown property 'projectDir' for task ':ProjectDirTest' of type ProjectDirTestClass.
但是,如您所见,在第二个 println 中存在一个问题 - Gradle 没有看到该projectDir
变量。
我已经习惯了不正确的 IntelliJ 标记错误。但是我怎样才能让任务类projectDir
在运行时看到变量呢?
在真正的任务类中,我也不能使用 exec() 命令——Gradle 也看不到它。