我有2个子项目的java项目。像这样的结构
- project_root
|- client
|- src
|- build.gradle
|- server
|- src
|- build.gradle
|- build.gradle
我只需要在root buiild.gradle中创建'deploy'任务,然后执行以下操作:
allprojects {
apply plugin: 'java'
repositories {
mavenCentral()
}
}
task cleanTarget(type: Delete) {
delete "target"
delete "target.zip"
}
task cleanAll() {
dependsOn cleanTarget
dependsOn clean
dependsOn subprojects.clean
}
task jarChilds() {
dependsOn subprojects.jar
}
task copyFiles(type: Copy) {
copy {
from("client/build/libs/")
into project.file('target')
}
copy {
from("server/build/libs/")
into project.file('target')
}
}
task zipApp(type: Zip) {
from 'target/'
include '*'
include '*/*'
archiveName 'target.zip'
destinationDir(project.rootDir)
}
task deploy{
dependsOn cleanAll
dependsOn jarChilds
dependsOn copyFiles
dependsOn zipApp
jarChilds.shouldRunAfter cleanAll
copyFiles.shouldRunAfter jarChilds
zipApp.shouldRunAfter copyFiles
}
Executing task 'deploy'...
> Task :clean
> Task :cleanTarget
> Task :client:clean
> Task :server:clean
> Task :cleanAll
> Task :client:compileKotlin
> Task :client:compileJava
> Task :client:processResources
> Task :client:classes
> Task :client:inspectClassesForKotlinIC
> Task :client:jar
Client jar done
> Task :server:compileKotlin
> Task :server:compileJava
> Task :server:processResources
> Task :server:classes
> Task :server:inspectClassesForKotlinIC
> Task :server:jar
Server jar done
> Task :jarChilds
> Task :copyFiles NO-SOURCE
> Task :zipApp NO-SOURCE
> Task :deploy
BUILD SUCCESSFUL in 3s
14 actionable tasks: 14 executed
12:39:15: Task execution finished 'deploy'.
我看到错误“no-source”,但是文件夹“client/build/libs”和“server/build/libs”存在并包含jar。我可以肯定,因为手动运行任务‘复制文件’创建文件夹‘目标’和复制所有文件。我看到的唯一可能的选项是“复制文件”任务在“jar childs”之前运行。但我不明白为什么。我错过了什么,为什么不起作用?
对不起,我的英语不好
您的任务copyfiles
使用项目
实例的方法copy
而不是配置实际任务。这就是为什么任务保持未配置状态,并且一旦执行,就报告没有文件要处理(no-source
)。若要配置任务,请使用任务类型copy
的方法:
task copyFiles(type: Copy) {
from("client/build/libs/")
from("server/build/libs/")
into("target")
}
附加提示:您可能根本不需要任务copyfiles
。相反,您可以使用任务zipapp
来收集文件:
task zipApp(type: Zip) {
from subprojects.jar
archiveName 'target.zip'
destinationDir(project.rootDir)
}
通过将子项目
的JAR
任务放入from
方法,Gradle甚至可以自动添加任务依赖项,因此您不需要使用dependson
注册它们。
请查看以下简短完整的build.gradle
文件:
subprojects { // using subprojects here, because your root project has no sources
apply plugin: 'java'
repositories {
mavenCentral()
}
}
task clean(type: Delete) { // without the 'java' plugin, there is no automatic 'clean' task
dependsOn subprojects.clean
delete 'target.zip'
}
task zipApp(type: Zip) {
mustRunAfter clean
from subprojects.jar
archiveName 'target.zip'
destinationDir(project.rootDir)
}
task deploy {
dependsOn clean
dependsOn zipApp
}
我有一个文件,看起来像这样 wsimport任务从wsdl文件生成所需的一些java文件。生成需要一些时间,所以我不希望每次构建jar或编译程序时都执行它。 wsclean任务旨在当wsdl发生更改时使用。 首先,我运行wsimport任务并确认文件生成正确,它们就是! 但是现在,当我运行gradle jar时,生成的文件被删除了。为什么? 当我注释掉wsclean任务时,jar任务成功地继续。为
问题内容: 我有一个导航栏作为地图: 其中具有各种属性,子项等。当我尝试渲染导航栏(带有)时,它以随机顺序显示。我知道它在运行时会随机排序,但是似乎无法获取有序的键列表或按插入顺序进行迭代。 游乐场链接位于此处:http : //play.golang.org/p/nSL1zhadg5,尽管它似乎没有表现出相同的行为。 如何在不破坏插入顺序的情况下迭代此映射? 问题答案: Go地图不保持插入顺序;
本文向大家介绍js为什么不能正确处理小数运算?,包括了js为什么不能正确处理小数运算?的使用技巧和注意事项,需要的朋友参考一下 上面的程序会输出1吗? 在 你有必要知道的 25 个 JavaScript 面试题 一文中,第 8 个题浅显的说了下 js 为什么不能正确处理小数运算的问题。今天重拾旧题,更深层次的剖析下这个问题。 但要先说明的是,不能正确处理小数的运算并不是 JavaScript 语言
我是格拉德尔的新信徒。大多数任务都很好。然而,我看到战争任务总是被跳过。在调试模式下运行时,我会看到以下日志- 09:12:34.889[LIFECYCLE][类org.gradle.internal.buildevents.TaskExuretionLogger]: war09:12:34.889[DEBUG][org.gradle.api.internal.tasks.execution.Ex
现在我正在学习C++我做了我的第一个小程序加法计算器,我写两个数字,它把它们相加。你能告诉我为什么我的输出是0吗? 输出:
问题内容: 我正在阅读一本关于线程/同步的简单示例,该书声称使用会允许在同一实例上调用一个线程来访问该方法。它确实按照承诺进行了序列化,但似乎在 下面的方法中创建的第三个数组的大约9/10倍于第二个数组。该代码是示例代码,显示了没有同步方法的问题。 这本书说明了两种方式来处理这个问题,他们是- 并且 很显然,这两种选择工作,因为,相对于原来的代码,括号内的字都像一致… [您好] [世界](大约90