gpt4 book ai didi

没有 jar 的 Gradle Wrapper

转载 作者:行者123 更新时间:2023-12-03 03:08:41 29 4
gpt4 key购买 nike

我正在设计一个企业范围的构建系统,到目前为止,已经有超过 1000 个项目使用大约 21 种不同的语言。我们正在为此使用 gradle,但我遇到了问题。我们正在迁移到 gitlab 服务器,我们刚刚花了数周时间构建了系统和 Hook ,这些系统和 Hook 明确阻止人们将 jar 文件和其他库提交到源代码库。 (长话短说为什么,反正你真的不在乎)。

现在的问题

我们如何在gradle/wrapper 文件夹中没有jar 文件的情况下使用gradle wrapper?我尝试删除该文件夹,正如 git hooks 所做的那样,gradlew 给了我们一个找不到类的错误,正如我所料。

是否可以在没有 jar 的情况下使用包装器,或者用户在克隆项目时是否必须重新生成包装器?如果 gradle/wrapper 文件夹或 jar 丢失,是否可以将 gradlew 文件设置为自动重新生成?

最佳答案

所以基本上,当您通过

设置 包装器
gradle wrapper

你放:

  • 脚本
  • 属性
  • gradle 包装器 jar 文件

进入当前项目目录。 gradle-wrapper.jar 来自您本地的 Gradle 发行版。 You can check this in the source code

URL jarFileSource = Wrapper.class.getResource("/gradle-wrapper.jar");
if (jarFileSource == null) {
throw new GradleException("Cannot locate wrapper JAR resource.");
}
GFileUtils.copyURLToFile(jarFileSource, jarFileDestination);

当您运行 gradle wrapper 时,您会从该 jar 调用主类以下载和运行 Gradle。所以从技术上讲,您可以修改 SH 和 BASH 脚本,以便在 Java 执行之前从 GitHub 存储库下载包装文件,显然只有在文件不存在的情况下。我确实做到了并且它起作用了,但是我不确定它有多容易出错。我不知道 GitHub 将来是否会更改 URL。我刚刚在 gradlew.shCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 行之前的某处添加了以下代码段。

if [ ! -f "gradle/wrapper/gradle-wrapper.jar" ]
then
curl https://raw.githubusercontent.com/gradle/gradle/master/gradle/wrapper/gradle-wrapper.jar -o $APP_HOME/gradle/wrapper/gradle-wrapper.jar
fi

无论如何,包装文件有 56K,它被设计得尽可能小,以便人们可以将它放入 Git 存储库中。话虽如此,我相信您不必担心,只需将这个特定的 JAR 文件添加到您的 Hook 的白名单中,并允许它进入存储库。

关于没有 jar 的 Gradle Wrapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39856714/

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