Java 渐变复制任务仅执行部分复制
我有一个Gradle“deploy”任务,它将一个JAR和一个“config”文件夹的所有内容复制到一个预定的目标。我的项目目录结构如下所示:Java 渐变复制任务仅执行部分复制,java,gradle,Java,Gradle,我有一个Gradle“deploy”任务,它将一个JAR和一个“config”文件夹的所有内容复制到一个预定的目标。我的项目目录结构如下所示: myapp/ src/main/java/ <java sources> config/ <lots of stuff> build.gradle settings.gradle task deploy(type: Copy, overwrite: true) {
myapp/
src/main/java/
<java sources>
config/
<lots of stuff>
build.gradle
settings.gradle
task deploy(type: Copy, overwrite: true) {
from('build/libs')
into('/Users/myuser/myapp/deploy/myapp')
include('myapp.jar')
from('config')
into('/Users/myuser/myapp/deploy/myapp')
include('config/**')
}
/Users/myuser/myapp/deploy/myapp/
myapp.jar
config/
<lots of stuff>
当我运行/gradle build deploy
时,我看到JAR被复制到/Users/myuser/myapp/deploy/myapp
,但不是配置
目录(也不是它的所有子目录和内容)。所需的最终结果是一个/Users/myuser/myapp/deploy/myapp
目录,如下所示:
myapp/
src/main/java/
<java sources>
config/
<lots of stuff>
build.gradle
settings.gradle
task deploy(type: Copy, overwrite: true) {
from('build/libs')
into('/Users/myuser/myapp/deploy/myapp')
include('myapp.jar')
from('config')
into('/Users/myuser/myapp/deploy/myapp')
include('config/**')
}
/Users/myuser/myapp/deploy/myapp/
myapp.jar
config/
<lots of stuff>
/Users/myuser/myapp/deploy/myapp/
myapp.jar
配置/
此外,我们的想法是,当我运行deploy
时,无论/Users/myuser/myapp/deploy/myapp/config
目录中当前有什么,此副本都应该是“drop n”swap,特别是对于config
目录,这些内容将被我的项目的config/
目录中的任何内容完全替换
更新
我创建了一个示例来演示这个问题。只需按照说明进行复制
你知道我哪里出错了吗?我想,原因是
包含('config/**')
,应该包含类似配置/config/**
的内容,其中**
是所有子目录,但不是配置/
目录下的所有文件
尽量做到如下:
task deploy(type: Copy, overwrite: true) {
from('build/libs')
into('/Users/myuser/myapp/deploy/myapp')
include('myapp.jar')
into('/Users/myuser/myapp/deploy/myapp')
include('config/**')
}
- 要直接回答您的问题:
task deploy(type: Copy, overwrite: true){ from ("$buildDir/libs"){include('gradlecopyexample.jar')} from ("$rootDir"){include('config/**')} into("$buildDir/deploy") }
- 然而,我仍然认为gradle应用程序插件非常适合您的用例。不要将
文件夹放在根目录中,而是将其放在config
下,然后运行gradlesrc/dist
(或installDist
)将配置文件夹与分发包一起distZip
installdist
任务了吗?谢谢@Stanislav,但这不起作用。当我执行ls-al/Users/myuser/myapp/deploy/myapp
时,我看到JAR被复制到了那里(带有更新的时间戳),但没有复制到config
目录。@smeeb是的,根据您的布局更新了答案。您必须从中删除第二个,并从根目录中复制它,然后它将复制文件夹和其中的所有内容。刚刚在Stanislav(+1)用Gradle 2.14.1再次进行了测试-但是这对我不起作用。请看我的报告,它完美地再现了这个问题。只复制JAR,而不复制config/
目录。有什么想法吗?我更新了你的示例代码的答案。