Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何控制gradle/gradlew文件和文件夹的位置_Java_Gradle_Build.gradle_Gradlew - Fatal编程技术网

Java 如何控制gradle/gradlew文件和文件夹的位置

Java 如何控制gradle/gradlew文件和文件夹的位置,java,gradle,build.gradle,gradlew,Java,Gradle,Build.gradle,Gradlew,在一个新项目中(我正在使用gradle/gradlew),我想将各种gradle/gradlew文件和文件夹的位置设置为与默认行为不同的位置 我说的是: 文件夹gradle,带有子文件夹包装器(包含gradle-wrapper.jar和gradle-wrapper.properties 文件夹构建,子文件夹“类”、“依赖缓存”、“libs”、“资源”包含来自各个组件的各种xml文件,“tmp”包含子文件夹“compileJava”和“jar” 但是如何配置以及在何处配置?您可以通过设置类型的

在一个新项目中(我正在使用gradle/gradlew),我想将各种gradle/gradlew文件和文件夹的位置设置为与默认行为不同的位置

我说的是:

  • 文件夹gradle,带有子文件夹包装器(包含gradle-wrapper.jar和gradle-wrapper.properties
  • 文件夹构建,子文件夹“类”、“依赖缓存”、“libs”、“资源”包含来自各个组件的各种xml文件,“tmp”包含子文件夹“compileJava”和“jar”

但是如何配置以及在何处配置?

您可以通过设置类型的任务来更改包装器和属性文件的位置。例如:

task wrapper(type: Wrapper) {
    jarFile = file('mywrapper/wrapper.jar')
}
buildDir = file('target')
运行
gradle wrapper
将生成以下文件:

.
├── build.gradle
├── gradlew
├── gradlew.bat
└── mywrapper
    ├── wrapper.jar
    └── wrapper.properties
可以通过方法更改默认生成输出目录。例如:

task wrapper(type: Wrapper) {
    jarFile = file('mywrapper/wrapper.jar')
}
buildDir = file('target')

您为什么要更改?记住,它的约定高于配置。您到底想实现什么?您是正确的:它是约定高于配置。但是约定(在这种情况下称之为公司策略驱动约定)。因此,无法应用提供的默认设置。我想知道如何建立包装器的约定。大多数其他构建工具不支持包装器。Maven只是最近才添加了一个。如果默认约定发生更改,则对于项目新手来说,理解构建将变得更加困难。该约定确实是一个非常重要的问题与shell auto complete组合时不显示。如果没有包装器,我可以键入
grad[tab]
,它会自动完成到
gradle
(包括尾随空格),我键入命令的其余部分。使用包装器,我键入
/gra[tab]
并且它会自动完成到
/gradle
,这不是包装器,而是包装器所在的文件夹,因此我必须在选项卡后按
w
,然后才能输入任何选项。能够重命名
gradle
文件夹将非常方便。嗨,本杰明。感谢您抽出时间回答这个问题:我有一点跟进问题:如何确保下载的外部库下载到项目中的文件夹,而不是用户目录中的隐藏目录中?Gradle将依赖项下载到Gradle用户主页中的本地缓存中(默认情况下
~/.Gradle
)。缓存在项目之间共享。如果要将Gradle user home更改为项目目录,则必须为每个项目更改它。这将对生成性能产生负面影响,因为下载的依赖项和包装器无法再共享。我知道这会为每个项目创建一个唯一集,但在e针对UAT和PROD服务器的部署过程,旨在实现最大的正常运行时间和性能。我不理解这个论点及其与毕业生用户家庭的相关性。你能澄清一下吗?