maven打包javaweb应用时找不到web.xml

发布于 2022-09-11 14:34:39 字数 2527 浏览 23 评论 0

项目结构是这样的
图片描述

pom.xml里打包配置如下:

<build>
        <finalName>pkgs</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

使用maven build时打包失败,报错找不到web.xml

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.637 s
[INFO] Finished at: 2018-10-22T14:29:55+08:00
[INFO] Final Memory: 31M/287M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project Pkgs: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]

使用网上搜到的解决方式也不奏效————分别在configuration标签里加:

                    <!-- 指定web.xml的路径  -->
                    <webXml>WebContent\WEB-INF\web.xml</webXml>
                    <!-- 指定jsp、js、css的路劲 --> 
                    <warSourceDirectory>WebContent</warSourceDirectory>

或者:

                    <webResources>
                        <resource>
                            <directory>WebContent</directory>
                        </resource>
                    </webResources>

或者:

        <!-- 设置WebContent目录为Web目录 -->
        <webappDirectory>WebContent</webappDirectory>
        <warSourceDirectory>WebContent</warSourceDirectory>

或者设置Project Facets,如下:
图片描述
都报同样的错。

只有把项目的WebContent改为webapp放在src/main/下,打包才成功
求教啊!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

飘落散花 2022-09-18 14:34:39

web.xml的作用

 外置servlet容器是通过web.xml用于引导启动应用程序的,一般web.xml会配置我们的spring容器的路径,用于启动我们的spring应用程序,Servlet规范要求必须要有web.xml文件;
 Servlet X(忘记哪个版本可)之后,web.xml不是必须的了,即由我们的应用程序引导启动内嵌tomcat;
   

方案一:用web.xml引导

1.创建webapp文件,添加web.xml文件,maven-war-plugin不变,然后打成war包!然后把war包放进外置tomcat运行;

方案二:用内嵌web容器

<build>
 <plugins> <!--tomcat内嵌插件-->
    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration> 
            <path>/</path> <!-- 项目访问路径 本例:localhost:9090, 如果配置的aa,则访问路径为localhost:9090/aa -->
            <port>9090</port>
            <uriEncoding>UTF-8</uriEncoding><!-- 非必需项 -->
        </configuration>
    </plugin>
 <!--打war包插件-->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.1.0</version>
     </plugin> 
  </plugins>
 </build>

添加内嵌tomcat插件和升级maven-war-plugin;
maven-war-plugin是跟着servlet规范走的!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文