6

如何配置GRADLE_USER_HOME选项?我的 Windows 用户名包含一个空格(C:\Users\Baz Foo),我认为构建因此失败。

E:\workspace-sts-3.0.0.RELEASE\agweb\ag-client\ag-shared\build\classes\main
error: Class com.acme.client.conn.rmi.SessionRMIImpl not found.
error: Class Foo\.gradle\caches\artifacts-13\filestore\xerces\xercesImpl\2.1
0.0\jar\9161654d2afe7f9063455f02ccca8e4ec2787222\xercesImpl-2.10.0.jar not found
.
error: Class Foo\.gradle\caches\artifacts-13\filestore\xml-apis\xml-apis\1.4
.01\jar\3789d9fada2d3d458c4ba2de349d48780f381ee3\xml-apis-1.4.01.jar;C:\Users\Baz
not found.
error: Class Foo\.gradle\caches\artifacts-13\filestore\provided\jbpm\3.0.4\j
ar\f2a9f8f32e59b335e069b5444f6c36a30abf0845\jbpm-3.0.4.jar;C:\Users\Baz not fou
nd.
error: Class Foo\.gradle\caches\artifacts-13\filestore\log4j\log4j\1.2.16\bu
ndle\7999a63bfccbc7c247a9aea10d83d4272bd492c6\log4j-1.2.16.jar;C:\Users\Baz not
found.
5 errors ...

我添加了一个环境变量GRADLE_USER_HOME并将其设置为C:\Users\Baz Foo\.gradle并尝试过,--gradle-user-home="C:\Users\Baz Foo\.gradle"但它们都不起作用。

4

3 回答 3

6

我已明确定义GRADLE_USER_HOME指向没有空格的路径(例如:)E:\gradle-repository。该gradle-repository文件夹包含初始化脚本(init.gradle文件,请参阅Gradle 初始化脚本)。

于 2012-12-12T11:42:18.180 回答
2

只需根据此处的建议将其配置到您选择的目录(并且可能在您的系统驱动器之外)

允许独立于用户配置文件指定 Gradle 缓存的位置,它在下面引用。

您可能也想更改您的初始化脚本:

初始化脚本

当前行为

可以通过在命令行上提供它(通过-g--gradle-user-home),通过将其作为系统属性(gradle.user.home)提供,或通过设置环境变量(GRADLE_USER_HOME)来配置 gradle 用户主目录的位置,通过默认值(通常USER_HOME/.gradle)。

在此目录下的项目中,有些是用户提供的配置文件,如 gradle.properties、init.gradle、init.d 下的任何文件,以及用户可能为这些文件创建的任何文件。

其他项目是缓存目录,例如缓存、本机和包装器。这些通常包含信息缓存,如果需要,这些信息可能会在以后重新获取,并且随着时间的推移会变得非常大。

最后,还有作业管理项,例如 daemon 下的那些。

在这些项目中,除了用户配置文件之外,所有项目都存在用户主目录的共享文件系统存在问题。最明显和最严重的是,并非所有共享文件系统都具有与本地文件系统相同的锁定行为,当用户尝试同时在多台机器上使用守护进程时会导致非常奇怪的结果。但是,缓存也会引起问题,因为大型共享文件系统通常具有限制用户在其共享空间中拥有的存储量的配额。因此,用户可能希望将大型可替换缓存放置在本地磁盘上,远离他们的主目录。

目前,无法配置这些缓存和特定于主机的部分与用户配置文件所在的位置分开。都可以在 下找到GRADLE_USER_HOME。因此,用户有几个选项来解决问题:

他们可以使用从他们的GRADLE_USER_HOME目录到其他目录的符号链接,以便配置文件位于 下USER_HOME,但是通过跟随符号链接到下/var/tmp或类似位置的符号链接可以找到缓存。这还要求用户让他们的登录脚本确保/var/tmp在每次登录后都存在下面的目录,以防它们被破坏(或者如果用户登录到他们以前没有使用过的机器)。他们可以使用GRADLE_USER_HOME环境变量来在本地文件系统的某个位置找到它们的整个目录(包括用户配置文件和缓存),例如在/var/tmp. 这还要求用户让他们的登录脚本确保该目录存在并且用户的每用户配置文件被复制到其中。期望的行为

最佳情况下,应该可以为所有这些缓存目录提供备用位置。如果它们继续位于GRADLE_USER_HOME默认情况下很好,但是能够一次重定位所有缓存(可能GRADLE_USER_CACHE默认为GRADLE_USER_HOME并且如果它不存在将创建目标目录)或每个子目录的单个缓存目录GRADLE_USER_HOME(因此您可以将包装器、本机、守护程序和缓存定位在不同的位置 - 可能将包装器、本机和缓存定位在大于用户主目录的共享卷上,并将守护程序定位在本地卷上以避免锁定和处理问题.)

由于这将允许缓存位置与用户配置位置分开配置,因此用户配置可能可用于指定缓存配置。例如,用户的 gradle.properties 文件可能指定新的基本缓存目录或新的单个缓存目录。

语境

如评论中所述,我添加了支持原始票证:

这对我来说很重要——我的组织使用分布式文件系统作为主目录,具有相当严格的配额。这意味着在人们可以使用 gradle 构建东西之前,他们必须在本地磁盘上设置一个 gradle 用户主目录,或者从他们的 gradle 用户主目录到本地磁盘上的某个位置的符号链接。向用户解释如何做到这一点……比应该做的要困难得多。它对球场也没有多大好处:“嘿,试试这个很棒的构建工具!......但首先你需要执行这个丑陋的kludge。”

使用环境变量或 gradle 属性使其更易于配置意味着能够说“将此行添加到您的.profile”或“将此行添加到您的.gradle/gradle.properties”,而不是“在您的登录脚本中运行这段长代码块几个目录和指向它们的符号链接,否则一切都会爆炸”。

于 2018-05-21T08:29:51.180 回答
-3

必须开始->运行->cmd打开命令提示符,然后键入

dir c:\users /x

并记下简称 - 应该类似于Baz~1

尝试使用短名称。这是一个 DOS 宿醉。

于 2012-08-17T13:17:38.517 回答