Groovy-检查系统环境是否存在,是否使用默认路径?

Groovy-检查系统环境是否存在,是否使用默认路径?,groovy,Groovy,我是java和groovy的新手。所以我需要对这些概念进行更多的解释。我来自JavaScript/PHP背景,有点迷茫 问题 在我的gradle构建中,我必须编译这些JAR。我还有一个windows/mac用户群,其中一些用户设置了环境变量,而另一些用户没有。大多数windows用户无法设置其环境变量,因为权限问题需要管理访问权限。我在一家大公司工作,要获得管理员权限并不容易 如果为零,则如何设置默认路径? 如果系统路径未定义为使用硬编码路径,则如何默认 此外,如何检查该路径是否存在 例如,这是

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

问题 在我的gradle构建中,我必须编译这些JAR。我还有一个windows/mac用户群,其中一些用户设置了环境变量,而另一些用户没有。大多数windows用户无法设置其环境变量,因为权限问题需要管理访问权限。我在一家大公司工作,要获得管理员权限并不容易

如果为零,则如何设置默认路径? 如果系统路径未定义为使用硬编码路径,则如何默认

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

例如,这是我的代码,我已经重命名了一些变量:

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))
}

提前感谢。

要将字符串转换为路径,请使用java.nio.file.Paths。Path.get将返回一个Path对象,但即使这样也不会让您知道文件是否存在于磁盘上

所以我将把路径转换成一个文件,然后询问它是否存在

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() }

我明白了。这似乎很简单。我更专注于细节/语义。我看到您正在使用~tilde作为运算符。这是否意味着它会将windows上的主文件夹转换为等效路径?再次感谢您的帮助。我使用unix,所以不知道~/是否在Windows JVM上做了一些特殊的操作