如何通过Shell脚本向Gradle构建的Java项目传递运行参数?
解决Gradle项目中通过Bash脚本传递参数给Java主方法的问题
别担心,这个问题其实很好解决——Gradle的run任务本身就支持通过--args选项传递参数给Java主方法,我们只需要写一个简单的Bash脚本,把用户输入的参数直接转发过去就行。
步骤1:创建Bash脚本
在你的项目根目录(和gradlew同一层级)新建一个名为runMyCode的文件,写入以下内容:
#!/bin/bash # 将脚本接收的所有参数转发给Gradle run任务的--args选项 ./gradlew run --args="$*"
步骤2:给脚本添加执行权限
在终端里运行这条命令,让脚本具备可执行能力:
chmod +x runMyCode
步骤3:测试脚本
现在你就可以像预期那样传递参数了:
./runMyCode hello.txt -f
这条命令等价于直接执行:
./gradlew run --args="hello.txt -f"
你的Java主方法会顺利接收到hello.txt和-f这两个参数。
处理带空格的参数
如果你的参数里包含空格(比如文件名是my document.txt),直接用引号包裹参数即可,脚本会正确处理:
./runMyCode "my document.txt" -v
这会把my document.txt和-v完整传递给Java主方法。
进阶:更健壮的参数处理(可选)
如果你的参数里有特殊字符(比如引号、反斜杠),可以用printf确保参数被正确转义,修改脚本为:
#!/bin/bash ./gradlew run --args="$(printf "%q " "$@")"
这个版本能应对更复杂的参数场景,比如包含空格、引号或者其他特殊符号的参数。
内容的提问来源于stack exchange,提问作者Jofbr
相关产品推荐
相关产品推荐

