我是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))
}
提前致谢。
答案 0 :(得分:1)
要将字符串转换为路径,请使用java.nio.file.Paths
。 Paths.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() }