【问题标题】:Can gradle create META-INF, WEB-INF folder and web.xml automatically?gradle 可以自动创建 META-INF、WEB-INF 文件夹和 web.xml 吗?
【发布时间】:2026-01-09 05:45:02
【问题描述】:

我是新手。我想用 gradle 启动一个 web 应用程序。我使用的版本是v3.1

目前,我只在 build.gradle 文件中添加 apply plugin: 'war'。

我使用了war插件,但是运行./gradlew build后它并没有创建META-INF、WEB-INF文件夹和web.xml。

我是否需要手动创建这些文件夹和文件或 gradle 有一种我不知道自动创建它们的方式?

【问题讨论】:

标签: java gradle gradlew


【解决方案1】:

Gradle specification of War plugin 回答您的问题:

War 任务的默认行为是将 src/main/webapp 的内容复制到存档的根目录。您的 webapp 目录当然可能包含一个 WEB-INF 子目录,其中可能包含一个 web.xml 文件。你编译的类被编译成 WEB-INF/classes。运行时配置的所有依赖都复制到WEB-INF/lib中。

【讨论】:

  • 但是为什么运行./gradlew build后没有WEB-INF/classes子目录,WEB-INF/web.xml文件。我需要先手动创建它们,然后将它们包含在war文件中吗?
  • 我希望您在 src/main/webapp 下没有源代码可以放入 WEB-INF/classes。您必须手动创建 web.xml 文件。
【解决方案2】:

我用谷歌搜索了这个https://guides.gradle.org/building-java-web-applications/

指南提到:

定义 Web 应用程序元数据有两种选择。在 servlet 规范 3.0 版之前,元数据驻留在项目的 WEB-INF 文件夹中名为 web.xml 的部署描述符中。从 3.0 开始,元数据可以使用注解来定义。

我认为 Gradle 鼓励使用注解,所以 Gradle 不会自动创建 WEB-INF 文件夹等。

【讨论】:

    最近更新 更多