【问题标题】:issue - creating a directory with gradle not working问题 - 使用 gradle 创建目录不起作用
【发布时间】:2014-08-11 11:12:33
【问题描述】:

我有以下build.gradle

task wrapper(type: Wrapper) {
    gradleVersion = '2.0'
}

apply plugin: 'java'

task filter(type: Copy) {
    def subdir = new File(project.buildDir, "subdir")
    println("subdir: "+subdir)

    if( !subdir.exists() ) {
        println("creating subdir")

        if(subdir.mkdirs()) {
            println("succeeded in making folder")

            if(subdir.exists()) {
                println("folder exists")
            } else {
                println("folder does not exist")
            }
        } else {
            println("failed to make folder")
        }
    } else {
        println("folder exists already")
    }
}

使用gradle wrapper 下载包装器后,然后运行:

/tmp/test $ ./gradlew clean filter
subdir: /tmp/test/build/subdir
creating subdir
succeeded in making folder
folder exists
:clean
:filter UP-TO-DATE

BUILD SUCCESSFUL

Total time: 4.121 secs

这似乎表明一切正常。但是,当我仔细检查时,我得到了这个:

/tmp/test $ ls -l /tmp/test/build/subdir
ls: /tmp/test/build/subdir: No such file or directory

注意事项

  • 这是在 MacOS Mavericks 上。
  • 执行用户可以在 shell 中创建目录。
  • 有足够的磁盘空间。

请告知我在使用 Gradle 时可能做错了什么,无法创建目录,但 Gradle 表明它已成功?任何故障排除提示将不胜感激。

谢谢!

【问题讨论】:

  • 你到底想在这里实现什么?为什么要手动创建目录,以及要从哪里复制到哪里(毕竟你声明了Copy 任务)?
  • 你解决过这个问题吗?我很想知道答案。

标签: java shell gradle


【解决方案1】:

可能是复制任务什么也没做,是“UP-TO-DATE”。

13:21:40.045 [INFO] [org.gradle.api.internal.tasks.execution.SkipEmptySourceFile
sTaskExecuter] Skipping task ':filter' as it has no source files.

我认为这是由于 Copy 任务需要 from 和 into。

尝试创建一个非复制任务,例如,

task filter() << {
    def subdir = new File(project.buildDir, "subdir")
    println("subdir: "+subdir)

    if( !subdir.exists() ) {
        println("creating subdir")

        if(subdir.mkdirs()) {
            println("succeeded in making folder")

            if(subdir.exists()) {
                println("folder exists")
            } else {
                println("folder does not exist")
            }
        } else {
            println("failed to make folder")
        }
    } else {
        println("folder exists already")
    }
}

【讨论】:

    猜你喜欢
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    相关资源
    最近更新 更多