分享

Intellij8中Maven打包时jsp和servlet组件冲突解决办法

 黄建校 2016-07-10

    最近在改别人的一个模块程序时,是用Intellij Idea8做的,项目是用Maven来管理的,Web模块引用到了jsp-api.jar和servlet-api.jar,结果在用Maven打包时,war文件中直接包装了这两个文件,而这两个文件和Tomcat本身的文件有冲突,导致了应用程序不能加载。

    本来自己对Idea也不熟悉,对Maven也不懂,搞了好久,始终没有解决,只能先生成,然后再删除这两个文件。因为如果不用Maven生成,直接用Idea的Build生成,那么其中的资源文件又是乱码,界面上全是蚂蚁在爬,心里麻得乱七八糟。

    找了好多资料,终于在这里找到了需要的说明:

 

http://macrochen./blog/246170

 

http://maven./guides/introduction/introduction-to-dependency-mechanism.html 

 

http://www.360doc.com/content/07/0727/14/27908_636504.shtml

 

    原来可以在pom文件中配置时加个<scope>参数,使用provided就可以期望应用服务器将提供这个支持,如,我需要jsp-api和servlet-api支持,则我可以配置为:


        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>   <!--这里说明jsp-api.jar文件将由应用服务器提供,打包时不需要包含-->
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.1.2</version>   <!--这里没有指定scope参数,说明默认是compile,则打包时将包含-->
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.4</version>
            <scope>provided</scope> <!--打包时不包含-->
        </dependency>

 

    原理性的东西我不再罗嗦了,其实我也不太懂,所以先当快餐用吧。顺便记下来,免得以后久了不用又忘了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约