您的位置:首页 > 编程语言 > Java开发

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

2016-09-14 11:31 253 查看
用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-添加自己想用的服务器版本。



项目部署

我们直接运行服务器想要测试实现了某个框架简单功能的页面,可能会在控制台里提示找不到这个框架中的某一个类。但实际上我们已经通过pom.xml指定了依赖了,也确实在Maven Dependencies库中看到了相应的包。

这里的问题在于,我们没有设定将Maven Dependencies库部署到web-app/WEB-INF/lib下。

解决办法:

右键项目-properties-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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  eclipse maven