gpt4 book ai didi

bash - 从 bash 移植到 Gradle

转载 作者:行者123 更新时间:2023-11-28 20:30:35 24 4
gpt4 key购买 nike

我有一个看起来像这样的项目的 Bash 脚本:

#!/usr/bin/env bash

curl -LOk (url)/project.zip
mkdir project
unzip project.zip -d project
cp -rf project/assets assets
rm -rf project && rm -rf project.zip
gradle test

所以它所做的就是从不同的项目下载我想要的存档,将其 Assets 复制到当前项目的工作区,删除所述存档和提取的我不想要的东西,然后运行测试套件以确保一切正常在职的。由于我使用 Gradle 来运行测试套件,我想将所有内容迁移到 100% Gradle,以便构建过程可以 1) 多平台 & 2) 由于我的构建脚本不断维护而易于管理。我应该怎么做呢?经过一些研究,我遇到了 gradle-download-task ;这会有助于处理下载部分,还是有更好的选择?

最佳答案

有3种方法:

首先(不是跨平台方法)

直接从 gradle 运行您的脚本(无需在其中运行测试 - 它可以通过 build.gradle 本身中的任务依赖项定义):

task download1(type: Exec) {
executable 'sh'
args 'download.sh'
}

第二

使用 groovy + gradle 魔法:

task download2 << {
def file = project.file('sample2.zip')
def out = new BufferedOutputStream(new FileOutputStream(file))
out << new URL(zipUrl).openStream()
out.close()
project.copy {
from zipTree(file)
into 'project2'
}
project.copy {
from project.file('project2/assets')
into 'assets2'
}
project.file('project2').deleteDir()
project.file('sample2.zip').delete()
}

第三

使用你找到的插件:

task download3(type: Download) {
def destination = new File(rootDir, 'sample3.zip')
src zipUrl
dest destination
doLast {
project.copy {
from zipTree(destination)
into 'project3'
}
project.copy {
from project.file('project3/assets')
into 'assets3'
}
project.file('project3').deleteDir()
project.file('sample3.zip').delete()
}
}

可以找到完整的例子here .

关于bash - 从 bash 移植到 Gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28650976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com