Groovy - 检查系统env存在否则使用默认路径?

时间:2017-07-26 15:36:12

标签: groovy

我是java和groovy的新手。所以我需要对这些概念进行更多解释。我来自JavaScript / PHP背景,我有点迷失。

问题

在我的gradle构建中,我必须编译这些罐子。我在windows / mac用户上也有一个用户群,其中一些用户已经设置了环境变量和一些天堂。由于需要管理访问权限的权限问题,Windows用户(大多数)无法设置其环境变量。我在一家大公司工作,管理员访问并不容易。

一个默认路径如果是nil

如果他们的系统路径没有被定义为使用硬编码路径,那么如何默认?

此外,如何检查该路径是否存在?

E.g。这是我的代码,我已将我的一些变量重命名为:

task build { 
    def root = System.getenv.FOO_HOME ?: 'C:/foo/foo/'
    def paths = [
        root + 'foo.jar',
        root + 'foo2.jar',
        root + 'foo4.jar',
        root + 'foo3.jar'
    ]

// I'm lost here. I don't know how to detect if that path exists for a that?
/* psuedo code */
    def validPaths = paths.map(item -> new Path(item))
}

提前致谢。

1 个答案:

答案 0 :(得分:1)

要将字符串转换为路径,请使用java.nio.file.PathsPaths.get()将返回Path个对象,除非您不知道该文件是否存在于磁盘上。

所以我会将路径转换为File,然后询问 是否存在。

import java.nio.file.Paths
Paths.get( "~/NotThere").toFile().exists()

在列表中,我将这两个操作分开:

// First, make an array of File objects
def asFiles = paths.collect( { currentString -> Paths.get( currentString ).toFile() } )

// now remove all the File objects that don't exist
def onlyExistingFiles = asFiles.findAll { currentPath -> currentPath.exists() }