gpt4 book ai didi

gradle - 如何强制Gradle在每个版本上运行任务?

转载 作者:行者123 更新时间:2023-12-03 04:02:53 25 4
gpt4 key购买 nike

我在Mac Yosemite上使用Gradle 2.7。在构建WAR时,假设所有测试都通过并且 war 的组装成功了,我想将WAR复制到本地$CATALINA_HOME/wbeapps目录中。所以我在build.gradle脚本中定义了这个:

task deployToTomcat(type: Copy) {
from war.archivePath
into "$System.env.CATALINA_HOME/webapps"
}

build.dependsOn deployToTomcat

当我运行 gradle build时,我可以看到该任务已运行,但是在 $CATALINA_HOME/webapps目录中什么也没有显示。这是输出:
davea$ gradle build
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:war UP-TO-DATE
:assemble UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:update
liquibase-plugin: Running the 'main' activity...
INFO 10/28/15 2:11 PM: liquibase: Successfully acquired change log lock
INFO 10/28/15 2:11 PM: liquibase: Reading from cbc_db.DATABASECHANGELOG
INFO 10/28/15 2:11 PM: liquibase: Successfully released change log lock
Liquibase Update Successful
liquibase-plugin: Running the 'test' activity...
INFO 10/28/15 2:11 PM: liquibase: Successfully acquired change log lock
INFO 10/28/15 2:11 PM: liquibase: Reading from PUBLIC.DATABASECHANGELOG
INFO 10/28/15 2:11 PM: liquibase: Successfully released change log lock
Liquibase Update Successful
:testClasses
:test UP-TO-DATE
:check UP-TO-DATE
:deployToTomcat UP-TO-DATE
:build UP-TO-DATE

“UP-TO-DATE”是否已运行?如何强制任务运行?

编辑:根据给出的答案,我更改了任务。 WAR文件将复制到与我的“build.gradle”文件相同的目录中的名为“null / webapps”的文件夹。这是输出
davea$ echo $CATALINA_HOME
/opt/apache-tomcat-6.0.44
davea$ gradle build
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:war UP-TO-DATE
:deployToTomcat UP-TO-DATE
:assemble UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:update
liquibase-plugin: Running the 'main' activity...
INFO 10/29/15 9:09 AM: liquibase: Successfully acquired change log lock
INFO 10/29/15 9:09 AM: liquibase: Reading from cbc_db.DATABASECHANGELOG
INFO 10/29/15 9:09 AM: liquibase: Successfully released change log lock
Liquibase Update Successful
liquibase-plugin: Running the 'test' activity...
INFO 10/29/15 9:09 AM: liquibase: Successfully acquired change log lock
INFO 10/29/15 9:09 AM: liquibase: Reading from PUBLIC.DATABASECHANGELOG
INFO 10/29/15 9:09 AM: liquibase: Successfully released change log lock
Liquibase Update Successful
:testClasses
:test UP-TO-DATE
:check UP-TO-DATE
:build UP-TO-DATE

BUILD SUCCESSFUL

Total time: 0.865 secs

最佳答案

无需强制执行任务。相反,请适当配置任务:

task deployToTomcat(type: Copy) {
from war.outputs
into "$System.env.CATALINA_HOME/webapps"
}

war.finalizedBy deployToTomcat
archivePath定义了放置 war 的路径,但是要获得 war ,您需要使用任务的 outputs属性。
finalizedBy总是在完成任务后运行给定任务。在这种特殊情况下,这保证了将要准备构建的 Artifact 。
UP-TO-DATE表示该任务未运行。没关系

关于gradle - 如何强制Gradle在每个版本上运行任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33399681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com