Maven的Web项目在Eclipse下运行的问题总结

1.Maven默认的jdk是1.5,导致一动配置的话,就发生编译错误。看到网上如下指定compiler-plugin也不行。

            <plugin>  

                <groupId>org.apache.maven.plugins</groupId>  

                <artifactId>maven-compiler-plugin</artifactId>  

                <version>3.3</version>  

                <configuration>  

                    <!-- 指定source和target的版本 -->                 

                    <source>1.8</source>  

                    <target>1.8</target>  

                </configuration>  

            </plugin>        

扫描二维码关注公众号,回复: 493103 查看本文章

创建一个settings.xml,在eclipse的maven配置里,选择user的settings.xml。然后发现编译的时候不再报版本低的错误了。

<?xml version="1.0" encoding="UTF-8"?>

<profiles>

<profile>

   <id>jdk-1.8</id>

   <activation>

       <activeByDefault>true</activeByDefault>

       <jdk>1.8</jdk>

   </activation>

   <properties>

       <maven.compiler.source>1.8</maven.compiler.source>

       <maven.compiler.target>1.8</maven.compiler.target>

       <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>

   </properties>

</profile>

</profiles>


 

2.使用maven集成的tomcat7来运行web项目,要用到maven的tomcat7的插件。

在POM.xml里的<build>节里,加上

            <plugin>

                <groupId>org.apache.tomcat.maven</groupId>

                <artifactId>tomcat7-maven-plugin</artifactId>

                <version>2.2</version>

                <configuration>

                    <path>/yourcontext</path>

                </configuration>

            </plugin>

就可以了,然后配置Run As ->Maven build....->Run Configurations

Goals的地方填上tomcat7:run  

下面是几个常用的Goals命令

 

命令 描述
tomcat:deploy 部署一个web war包
tomcat:reload 重新加载web war包

tomcat:start

启动tomcat

tomcat:stop

停止tomcat

tomcat:undeploy

停止一个war包
tomcat:run 启动嵌入式tomcat ,并运行当前项目



 

注意Resolve Workspace artifacts这个勾一定要勾上,否则Debug的时候,断点会找不到

源代码。并且Run Configurations窗口的source tab里要加上项目(单有一个default也找不到源代码)。

3.虽然maven-tomcat7-plugin正常运行了,但是现在打开jsp画面的话,一直报jsp错。

“SEVERE: Servlet.service() for servlet jsp threw exception 
java.lang.NullPointerException” 

原因是加载了tomcat7插件后,tomcat里也自带有servlet-api和jsp-api两个包,Eclipse中用maven构建web项目时,如果在pom里写了servlet-api和jsp-api的依赖。这两个依赖如果没有的话,项目编译又会出现问题,

解决办法是servlet-api和jsp-api的依赖里加上<scope>provided</scope>,这样Maven就不会复制两个包到部署环境里去了。

       <dependency>

            <groupId>javax.servlet</groupId>

            <artifactId>javax.servlet-api</artifactId>

            <version>3.0.1</version>

            <scope>provided</scope>

        </dependency> 

        <dependency>

            <groupId>javax.servlet.jsp</groupId>

            <artifactId>jsp-api</artifactId>

            <version>2.2</version>

            <scope>provided</scope>

        </dependency>

        <dependency>

            <groupId>javax.servlet</groupId>

            <artifactId>jstl</artifactId>

            <version>1.2</version>

        </dependency>

至此,jsp页面也正常显示出来了。设置断点,点击eclipse的小虫子,执行前面配置好的Run Configuration

也能正常进入调试了。

猜你喜欢

转载自radzhang.iteye.com/blog/2290577