如何在Forgejo中用GitHub Actions语法高效创建多行gradle.properties文件?
解决方案
你可以用以下几种简洁的方式,通过单个run步骤完成gradle.properties文件的创建和内容填充,同时保持可读性:
方法1:Bash Here Document(推荐)
这是最清晰易维护的方式,直接把多行内容写入文件,无需处理转义:
- run: | mkdir -p ~/.gradle/ cat > ~/.gradle/gradle.properties << 'EOF' systemProp.http.proxyHost=proxy.domain.com systemProp.https.proxyHost=proxy.domain.com systemProp.http.proxyPort=9999 systemProp.https.proxyPort=9999 EOF cat ~/.gradle/gradle.properties
说明:
mkdir -p:确保~/.gradle/目录存在,即使目录已存在也不会报错(比单纯mkdir更安全)<< 'EOF':使用单引号包裹的分界符,避免Bash解析内容中的特殊字符或变量- 分界符之间的内容会完整写入目标文件,格式和你手动写的完全一致
方法2:printf命令
通过printf一次性输出多行内容,适合习惯用命令行参数的场景:
- run: | mkdir -p ~/.gradle/ printf '%s\n' \ 'systemProp.http.proxyHost=proxy.domain.com' \ 'systemProp.https.proxyHost=proxy.domain.com' \ 'systemProp.http.proxyPort=9999' \ 'systemProp.https.proxyPort=9999' > ~/.gradle/gradle.properties cat ~/.gradle/gradle.properties
说明:
%s\n表示每个参数后添加换行符,保证文件内容每行一条配置- 反斜杠
\用于换行书写命令,让配置项更清晰
方法3:echo多行转义
如果偏好echo命令,可以用-e参数解析换行符\n:
- run: | mkdir -p ~/.gradle/ echo -e "systemProp.http.proxyHost=proxy.domain.com\n\ systemProp.https.proxyHost=proxy.domain.com\n\ systemProp.http.proxyPort=9999\n\ systemProp.https.proxyPort=9999" > ~/.gradle/gradle.properties cat ~/.gradle/gradle.properties
说明:
-e开启转义字符解析,\n代表换行- 行尾的
\用于将长命令拆分成多行显示,避免单行过长
替换后的完整Workflow示例
把原来的多个run步骤替换成上述任意一种方法后,完整的YAML如下:
name: Android CI on: [push] jobs: build: runs-on: high steps: - run: | mkdir -p ~/.gradle/ cat > ~/.gradle/gradle.properties << 'EOF' systemProp.http.proxyHost=proxy.domain.com systemProp.https.proxyHost=proxy.domain.com systemProp.http.proxyPort=9999 systemProp.https.proxyPort=9999 EOF cat ~/.gradle/gradle.properties - name: Checkout uses: https://github.com/actions/checkout@v4 - name: set up JDK 1.8 uses: https://github.com/actions/setup-java@v1 with: java-version: 1.8 - name: Build with Gradle run: ./gradlew assembleDebug
内容的提问来源于stack exchange,提问作者Tauri
相关产品推荐
相关产品推荐

