gpt4 book ai didi

java - gradle排除子项目的运行任务

转载 作者:行者123 更新时间:2023-11-30 06:35:21 25 4
gpt4 key购买 nike

我有以下项目结构:

Root project 'rmi-tutorial'
+--- Project ':client'
+--- Project ':lib'
\--- Project ':server'

当我执行根项目的运行任务时,我会收到以下错误:

Execution failed for task ':lib:run'.

如何排除 :lib 子项目的运行?我不想完全排除子项目,也不想通过命令行参数手动排除它。当我执行根项目的“构建”任务时,它应该构建 lib。当我执行根项目的“运行”时,它应该只运行子项目“服务器”和“客户端”。

此外,服务器应该在客户端之前运行。知道如何在不按正确顺序手动启动的情况下完成此操作吗?

我知道我能做到:

gradlew.bat build
gradlew.bat server:run
gradlew.bat client:run

但这不是我想做的。我更喜欢这样的东西:

gradlew.bat run

最佳答案

run 任务由 Application Plugin 创建,但该插件不是为图书馆项目设计的。您只能申请Distribution Plugin (应用插件:'distribution')或 Java Plugin (apply plugin: 'java'),它们都由应用程序插件隐式应用。这样,您的 lib 子项目将不会包含 run 任务,而仅包含子项目 clientserver 将被执行。

否则,如果您确实需要应用程序插件,您可以通过 StartParameter 排除 run 任务。 settings.gradle 文件中的对象:

[...] // include subprojects

startParameter.excludedTaskNames << ':lib:run'

此任务将从每个构建中排除。

管理 order of tasks ,您可以使用方法 shouldRunAftermustRunAfter (就像 dependsOn):

tasks.getByPath(':client:run').mustRunAfter(tasks.getByPath(':server:run'))

关于java - gradle排除子项目的运行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45276221/

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