给定两个文件树A和B,是否可以确定最短的操作序列或为了将A转换为B所必需的短序列操作?
操作可以是:
当A和B在相同的文件夹结构中具有相同内容(或相同大小相同CRC)和相同名称的相同文件时,它们是相同的.
这个问题一直困扰着我.目前我有以下基本想法:
但是我认为这实际上是一种不理想的方式.你能给我什么建议?
谢谢!
我有dir,其中另一个任务创建文件和目录所以在这个目录中有文件,目录,子目录,文件,等等.我想把所有文件和目录的绝对路径放在一个列表中.
def listNames = project.fileTree('dir')
Run Code Online (Sandbox Code Playgroud)
但只有文件包含在列表中,目录丢失.如何收集所有这些?
在我的 gradle 任务中,我遍历 fileTree 并且一切正常:
myTask {
fileTree("${project.projectDir}/dir").visit { FileVisitDetails details ->
exec {
//do some operations
}
}
}
Run Code Online (Sandbox Code Playgroud)
但现在我的目录中有不同类型的文件:
dir
??? sub1
? ??? file1.json
? ??? file2.js
??? sub2
? ??? file1.json
? ??? file2.js
??? sub3
??? file1.js
??? file2.json
Run Code Online (Sandbox Code Playgroud)
如何仅迭代某些类型的文件?因为
"${project.projectDir}/folder/dir/**/*.json"
Run Code Online (Sandbox Code Playgroud)
不起作用。
感谢您的任何建议
我想从src中排除src\main和src\test文件
FileCollection files =
project.fileTree(/src/).minus(project.fileTree(/src\main/)).minus(project.fileTree(/src\test/))
Run Code Online (Sandbox Code Playgroud)
如何在没有双减去用法的情况下排除此目录?
我想要的是一次将一个包或一组包提交到两个存储库,如果可能的话,使用相同的版本号,因此一个repo可以是另一个的镜像.
是否有可能使用Gofer?
我最近被指示在Gradle中实现所有构建/发布工程作业.
所以我是Gradle的新手,在这个勇敢的新世界中,一些在shell提示下显而易见的东西很难理解.
我的构建创建了一组jar文件.
我需要为每个人执行一个shell任务
类似的东西:
task findBugs (type:Exec, dependsOn: fb23) {commandLine 'java', '-jar',
'./findBugs/findbugs.jar', '-textui', '-progress', '-xml', '-output',
'TrustManagerService.xml', 'TrustManagerService.jar'}
Run Code Online (Sandbox Code Playgroud)
(我不能使用FindBugs插件,因为我们在JDK8中 - 所以我从预览版本外部运行FindBugs ......)
我可以得到一个文件集合,并用以下内容迭代文件名:
FileTree iotTree = fileTree(dir: '.')
iotTree.include '*.jar'
iotTree.each {
File file -> println file.name
println 'A file'
}
Run Code Online (Sandbox Code Playgroud)
要么
def iotJars = files(file('./jars').listFiles())
println ''
println iotJars
iotJars.each { File file -> println 'The next file is: ' + file.name }
Run Code Online (Sandbox Code Playgroud)
但是对于我的生活,我无法看到如何为返回的每个文件名执行shell命令...
关于这种最直接的方法的想法?
顺便说一句 - 什么是在代码清单中包含换行符的最佳方式 - 我必须返回并向每行添加CR以使它们断开...... :(
我有一个运行这样的任务的构建文件。
任务 1 ( unpackWar):将 war 文件解压缩到 Temp 文件夹
任务 2 ( copyWarFilesToWebContent):将文件复制到 WebContent 文件夹,但有一些排除项
任务 3 ( copyRequiredJarFilesToWebContent):将几个 jar 文件从 Temp/WEB-INF/lib 解压到 TempJarDir
任务 4 ( explodeProductJars):将我们想要的文件从 TempJarDir 复制到 WebContent 文件夹
有一个准备任务使用dependsOn 运行这些任务中的每一个,我已经向每个任务添加了mustRunAfter 命令,以便它们按顺序执行。还为每个任务设置 upToDateWhen = false。
似乎发生的是任务 1 运行良好并解压缩了战争。然后,任务 2 使用来自 Temp 的文件并将所需的文件正确添加到 WebContent。
任务 3 和任务 4 总是以最新状态返回,因为在指定的目录中似乎没有文件可以使用。
如果我在 Temp 文件夹存在时重新运行准备,任务 3 和 4 将正确运行。
我不确定这是由于 fileTree 的工作方式还是我做错了什么。大约一周前,我开始学习 gradle 并且仍在掌握它。
任务如下所示:
task prepare(dependsOn: ['unpackWar', 'copyWarFilesToWebContent', 'copyRequiredJarFilesToWebContent'])
prepare.outputs.upToDateWhen {false}
task …Run Code Online (Sandbox Code Playgroud)