我想使用 Gradle,但不想安装它。可以使用 Gradle 包装器来编译项目。如果您已经有一个 Gradle 项目,您可以使用现有的 Gradle 包装器初始化一个新项目:
/path/to/existing/project/gradlew init
。
但是要创建您的第一个项目,您必须根据 Gradle 文档安装 Gradle,并且从那时起就不再使用它。
如何在不安装 Gradle 的情况下获取(下载/创建/初始化)Gradle 包装器?
我编写了一个脚本来获取 Gradle 包装器,而无需安装 Gradle。
文件创建包装器:
#!/bin/bash
if [ -z "$1" ]; then
version='6.2.1'
else
version=$1
fi
rm -rf $version
mkdir -p $version
mkdir -p gradle/wrapper
pushd gradle/wrapper
wget https://raw.githubusercontent.com/gradle/gradle/master/gradle/wrapper/gradle-wrapper.jar
cat >gradle-wrapper.properties <<EOL
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-${version}-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
EOL
popd
pushd $version
echo -e "1\n1\n\n" | java -cp ../gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain init
popd
运行后,例如
createwrapper 8.9
(参数是 Gradle 版本),您将获得一个子目录,在本例中为 8.9
,其中包含 Gradle 项目。重要的是,该项目有一个 Gradle 包装器,您可以使用它来 init
一个新项目。
脚本的作用:它下载最新的
gradle-wrapper.jar
,为其提供所需版本的 gradle-wrapper.properties
,然后从该 jar 调用 init
任务,选择第一个选项(2 次)并接受默认项目名称(参见 echo -e
参数)。将来选项编号可能会改变其含义,并且需要更长的选项序列。
你得到什么:
$ tree
.
├── 6.2.1
│ ├── build.gradle
│ ├── gradle
│ │ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ └── settings.gradle
├── 8.9
│ ├── build.gradle.kts
│ ├── gradle
│ │ ├── libs.versions.toml
│ │ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ └── settings.gradle.kts
├── createwrapper
└── gradle
└── wrapper
├── gradle-wrapper.jar
├── gradle-wrapper.jar.1
└── gradle-wrapper.properties
(如你所见,一个项目中有
build.gradle
,另一个项目中有build.gradle.kts
,这一定是因为相同的数字在不同的版本中有不同的含义。)
有用的链接:http://blog.vorona.ca/init-gradle-wrapper-without-gradle.html(不适用于 Gradle 8.9)