如何配置Gradle Zip任务仅包含SVN/Git已提交文件?
Gradle Zip任务仅打包已提交至Git/SVN的文件
如果你需要配置Gradle的Zip任务,仅打包目录中已提交到Git或SVN的文件,可以通过调用版本控制工具的命令获取已跟踪文件列表,再在任务中过滤包含这些文件。
针对Git仓库的配置
通过git ls-files命令获取所有已跟踪的文件,将结果作为Zip任务的包含规则:
task myTask(type: Zip) { def projectDir = file("/path/to/my-project") // 执行git ls-files获取所有已跟踪文件的相对路径 def trackedFiles = exec { workingDir projectDir commandLine "git", "ls-files" standardOutput = new ByteArrayOutputStream() }.standardOutput.toString().split("\n") from projectDir include trackedFiles }
针对SVN仓库的配置
通过svn status --quiet命令获取已提交/已跟踪的文件,提取路径后作为包含规则:
task myTask(type: Zip) { def projectDir = file("/path/to/my-project") // 执行svn status获取状态信息,提取已跟踪文件的相对路径 def trackedFiles = exec { workingDir projectDir commandLine "svn", "status", "--quiet" standardOutput = new ByteArrayOutputStream() }.standardOutput.toString().split("\n").collect { line -> line.trim().substring(1).trim() }.findAll { !it.isEmpty() } from projectDir include trackedFiles }
说明
- 两种方案都是通过执行版本控制工具的命令来精准获取已提交/已跟踪的文件列表,确保打包内容仅包含仓库中已记录的文件。
- 注意替换
/path/to/my-project为你的实际项目目录路径。
内容的提问来源于stack exchange,提问作者eastwater
相关产品推荐
相关产品推荐

