创建 Gradle 包装器而不安装 Gradle

问题描述 投票:0回答:1

我想使用 Gradle,但不想安装它。可以使用 Gradle 包装器来编译项目。如果您已经有一个 Gradle 项目,您可以使用现有的 Gradle 包装器初始化一个新项目:

/path/to/existing/project/gradlew init

但是要创建您的第一个项目,您必须根据 Gradle 文档安装 Gradle,并且从那时起就不再使用它。

如何在不安装 Gradle 的情况下获取(下载/创建/初始化)Gradle 包装器?

gradle gradlew gradle-wrapper
1个回答
0
投票

我编写了一个脚本来获取 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)

© www.soinside.com 2019 - 2024. All rights reserved.