Eclipse建立Maven Web项目的几点事项

来源:互联网 发布:白银之瞳的前夜 知乎 编辑:程序博客网 时间:2024/05/22 14:40

用eclipse建立maven web项目的相关教程已经很多了,这里不打算重复他们写过的东西,仅仅谈谈自己在实践过程中踩到的坑以及解决的办法。

下载安装Eclipse和Maven以及其插件

这里有一个可以参考的比较详细的教程

jre设置

按照网上的教程直接建立Maven web项目的话,你会发现默认使用的jre为j2se1.5,显然已经跟不上现在的时代了。如果按照网上许多的教程,直接改Build Path,把jre换成jdk 1.7或者1.8,确实能暂时解决问题。但不久之后你就会发现,一旦更新一次maven,jre又会回到j2se 1.5。这是因为maven默认使用比较老的jre。所以我们需要告诉maven我们要使用新版本的jre。

有两种方法解决。转载自游一游走一走

方法1.一劳永逸式

该方法是直接修改maven的用户配置文件。如果使用该方法,你应该先在eclipse里设定好user setting文件的路径(Windows-Preferences-Maven-UserSettings-UserSettings)。maven默认的用户配置文件在:maven根目录\conf\settings.xml。

打开用户配置文件,在标签内添加如下内容:(自行根据需要修改数字为合适的版本号)

<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>

方法2.定制式

如果你有特别的需要,比如不同的项目使用不同的jre。那么可以在项目的pom.xml里的build标签内添加如下内容,然后update那个maven 项目:

    <plugins>        <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-compiler-plugin</artifactId>            <configuration>                <source>1.8</source>                <target>1.8</target>            </configuration>        </plugin>    </plugins>

这个原理是,该插件负责管理maven项目的jre运行环境。

框架配置文件的放置路径

与一般的项目从src中读取配置文件不同,maven项目是从src/main/resources读取配置文件的。应该把相关文件都放在src/main/resources,具体路径遵循src根目录(一般项目)=resources根目录(maven项目)。

新建项目没有src/main/java和src/test/java的问题

我没有找到什么很好的办法,只能自己手动添加了。

web module版本

新建maven web项目的Dynamic Web Module版本为默认的2.3。但现在早已进入3.0甚至3.1的时代了。我们想要直接通过项目的properties修改的话,会提示错误,无法修改。很多教程都提到了要用navigator视图,直接修改.settings文件夹下的org.eclipse.wst.common.project.facet.core.xml文件,将jst.web改成3.1就好了。这是对的。
但修改之后,有时候我们会遇到eclipse提示错误:Cannot change version of project facet Dynamic web module to 2.3。这个虽然不影响实际使用,但看着很烦。原因在于我们的web.xml配置还是2.3版本的。我们改为3.1版本就没问题了。
该解决方法参考自kolbe的博客文章
打开src/main/webapp/web.xml,将原本的内容删掉。
然后打开tomcat安装目录/webapps/ROOT/web.xml,复制其中的内容到你的web.xml中即可。(注意版本
我使用的是tomcat-8.0.36,其中的web.xml去掉注释后内容如下:

<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"  version="3.1"  metadata-complete="true">  <display-name>Welcome to Tomcat</display-name>  <description>     Welcome to Tomcat  </description></web-app>

Tomcat API

我们直接调用servlet相关的类,会提示没有这个类,也没有导入选项。这是因为我们没有添加服务器相关的包。
解决办法:
右键项目-properties-Java Build Path-Libraries-Add Library-Server Runtime-添加自己想用的服务器版本。
添加server的图片

项目部署

我们直接运行服务器想要测试实现了某个框架简单功能的页面,可能会在控制台里提示找不到这个框架中的某一个类。但实际上我们已经通过pom.xml指定了依赖了,也确实在Maven Dependencies库中看到了相应的包。
这里的问题在于,我们没有设定将Maven Dependencies库部署到web-app/WEB-INF/lib下。
解决办法:
右键项目-properties-Deployment Assembly 按如图所示添加和修改部署。
Deployment Assembly 示例图片
当然,这里只是个示范,如果你有其它的用户库要在web程序运行时使用,那也需要导入。

依赖包maven信息

别用通用的搜索引擎了,通用搜索引擎的信息更新不够及时。直接上仓库去搜就行了:Maven 仓库
很贴心地列出了各种历史版本,想用哪个用哪个。

pom.xml配置

详细说明看这个,作者为niuzhenxin,这里只说我现阶段用到的东西。基本都是摘抄自那篇文章。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  <!-- 声明项目描述符遵循哪一个POM模型版本  -->       <modelVersion>4.0.0</modelVersion>  <!-- 项目的全球唯一标识符 -->  <groupId>com.longfei</groupId>  <!-- 构件的标识符,它和group ID一起唯一标识一个构件。 -->  <artifactId>Learning_Hibernate</artifactId>  <!-- 项目产生的构件类型,因为我们是web项目,所以产生war文件。  -->  <packaging>war</packaging>  <!-- 项目当前版本,格式为:主版本.次版本.增量版本-限定版本号  -->  <version>0.0.1-SNAPSHOT</version>  <!-- 项目的名称, Maven产生的文档用  -->  <name>Learning_Hibernate Maven Webapp</name>  <!-- 项目主页的URL, Maven产生的文档用  -->  <url>http://maven.apache.org</url>  <!-- 项目相关的所有依赖 -->  <dependencies>    <!-- 一个依赖的相关信息 -->    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>4.12</version>      <scope>test</scope>    </dependency>    <dependency>        <groupId>org.hibernate</groupId>        <artifactId>hibernate-core</artifactId>        <version>5.2.1.Final</version>    </dependency>  </dependencies>  <!-- 构建项目需要的信息 -->  <build>    <!-- 产生的构件的文件名 -->    <finalName>Learning</finalName>    <!-- 要使用的插件集 -->    <plugins>        <!-- 一个插件的相关信息 -->        <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-compiler-plugin</artifactId>            <configuration>                <source>1.8</source>                <target>1.8</target>            </configuration>        </plugin>    </plugins>  </build></project>
0 0
原创粉丝点击