在Windows 7中指定GRADLE_USER_HOME

时间:2012-08-17 13:09:57

标签: java build gradle

如何配置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",但它们都不起作用。

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

Allow the location of the Gradle cache to be specified independent of the user configuration files,引用如下。

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

Initialization Scripts

  

当前行为

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

在此目录下放置的项目中,有些是用户提供的配置文件,例如gradle.properties,init.gradle,init.d下的所有文件,以及用户可能为要使用的文件创建的任何文件。 / p>

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

最后,还有一些作业管理项目,例如守护进程下的那些。

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

目前,无法配置这些缓存和特定于主机的部分与用户配置文件所在的位置分开存在的位置。所有都在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用户home,或者从gradle用户home到本地磁盘上的某个位置设置符号链接。 向用户解释如何做到这一点......比它应该更加困难。 它对于音调也没有多大好处:&#34;嘿,试试这个很棒的构建工具!......但首先你需要执行这个丑陋的kludge。&#34;

使用环境变量或gradle属性更容易配置意味着可以说&#34;将此行添加到.profile&#34;或者&#34;将此行添加到.gradle / gradle.properties&#34;,而不是&#34;在您的登录脚本中运行这一长串代码,为他们创建多个目录和符号链接,否则一切都会爆炸&#34 ;

答案 2 :(得分:-4)

开始 - &GT;游程&GT; CMD

dir c:\ users / x

记下短名称 - 应该像Baz~1

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