我有一个Gradle“部署”任务,它将JAR和“config”文件夹的所有内容复制到预期目的地。我的项目目录结构如下:
Message msg = new Message(to, Message.Type.chat);
Log.d("=====SEND MSG====>>", msgText);
msg.setBody(msgText);
connection.sendPacket(msg);
我的myapp/
src/main/java/
<java sources>
config/
<lots of stuff>
build.gradle
settings.gradle
任务看起来像是:
deploy
当我运行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/**')
}
时,我看到JAR被复制到./gradle build deploy
,但是不是 /Users/myuser/myapp/deploy/myapp
目录(也不是它的所有子目录和内容) 。所需的最终结果是config
目录,如下所示:
/Users/myuser/myapp/deploy/myapp
此外,我们的想法是这个副本应该是“drop n'watch”,特别是对于/Users/myuser/myapp/deploy/myapp/
myapp.jar
config/
<lots of stuff>
目录。也就是说,无论{{1}当前是什么}}目录,当我运行config
时,那些内容被完全替换为我项目的/Users/myuser/myapp/deploy/myapp/config
目录中的任何内容。
我创建了一个GitHub repo来证明这个问题。只需按照说明重现即可。
我出错的任何想法?
答案 0 :(得分:1)
我想,原因是include('config/**')
,其中应包含类似config/config/**
的内容,其中**
是所有子目录,但不是config/
目录下的所有文件。< / p>
尝试按如下方式进行:
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/**')
}
答案 1 :(得分:1)
直接回答您的问题:
task deploy(type: Copy, overwrite: true){
from ("$buildDir/libs"){include('gradlecopyexample.jar')}
from ("$rootDir"){include('config/**')}
into("$buildDir/deploy")
}
但是,我仍然认为gradle应用程序插件非常适合您的用例。不要将config
文件夹放在根目录中,而是将其放在src/dist
下,然后运行gradle installDist
(或distZip
)将包含您的配置文件夹和分发包。