新建一个Maven工程以后看起来是这样的java
能够看出我咱们须要的结构有很大差异,好比说JDK的版本不对,source folder也莫名其妙的只有一个,junit的依赖也太老了...git
对于我如今的程序来讲,也许没有hibernate和spring data jpa,没有freemarker,也没有其它什么东西,可是以下几个东西是必定会有的:github
springweb
apache commonsspring
jsonapache
logbackjson
junitapi
jstltomcat
因此个人初始化pom是这样的:mvc
<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"> <modelVersion>4.0.0</modelVersion> <groupId>com.laolang.gongda</groupId> <artifactId>bookshoptest</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>bookshoptest Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <!-- 依赖版本信息 --> <spring.version>4.1.9.RELEASE</spring.version> <!-- 项目相关 --> <!-- 文件拷贝时的编码 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- 编译时的编码 --> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> </properties> <dependencies> <!-- test --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-all</artifactId> <version>1.3</version> <scope>test</scope> </dependency> <dependency> <groupId>org.dbunit</groupId> <artifactId>dbunit</artifactId> <version>2.5.0</version> <scope>test</scope> </dependency> <dependency> <groupId>com.github.springtestdbunit</groupId> <artifactId>spring-test-dbunit</artifactId> <version>1.2.1</version> <scope>test</scope> </dependency> <!-- java ee --> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <!-- commons --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.0</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.2</version> </dependency> <!-- json --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.2.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.2.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.2.3</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.2</version> </dependency> <!-- logback --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.13</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.7.12</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>org.logback-extensions</groupId> <artifactId>logback-ext-spring</artifactId> <version>0.1.2</version> </dependency> </dependencies> <build> <finalName>bookshoptest</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <!--这里也可使用tomcat7-maven-plugin --> <version>2.2</version> <!--最新版本 --> <configuration> <url>http://localhost:8080/manager/text</url> <!--配置远程tomcat的路劲 --> <username>admin</username> <password>admin</password> <uriEncoding>UTF-8</uriEncoding> <!--tomcat的url编码 达到和修改server.xml文件同样的功能 --> </configuration> </plugin> </plugins> </build> <reporting> <plugins> <!-- mvn cobertura:help 查看cobertura插件的帮助 --> <!-- mvn cobertura:clean 清空cobertura插件运行结果 --> <!-- mvn cobertura:check 运行cobertura的检查任务 --> <!-- mvn cobertura:cobertura 运行cobertura的检查任务并生成报表,报表生成在target/site/cobertura目录下 --> <!-- cobertura:dump-datafile Cobertura Datafile Dump Mojo --> <!-- mvn cobertura:instrument Instrument the compiled classes --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.5.1</version> </plugin> </plugins> </reporting> </project>
这个pom除了添加上述的依赖以外,还添加了tomcat插件,cobertura插件,以及指定了项目依赖的JDK版本。
这个时候还不能开始写代码,由于在eclipse中建立maven项目是不支持servlet 3.0 的,因此咱们还须要修改项目的.setting中的文件,具体文件名是:
.settings/org.eclipse.wst.common.project.facet.core.xml
没有修改的时候是这样的:
<?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed facet="wst.jsdt.web"/> <installed facet="jst.web" version="2.3"/> <installed facet="wst.jsdt.web" version="1.0"/> <installed facet="java" version="1.7"/> <installed facet="jst.jaxrs" version="2.0"/> </faceted-project>
咱们须要把 jstl.web那一行的version修改成3.0
然而这还不行,还须要把自动生成的web.xml修改成3.0的
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Archetype Created Web Application</display-name> </web-app>
而后更新项目便可
STS默认只显示一个src/main/resources,若是你新建一个src/main/java的话,又会提示你已存在,这个时候须要修改项目设置 右键->Properties->java build path->Order And Export,把下面的复选框都选上就好了
在STS中,若是一个类由spring管理,或者是spring的配置文件,则会出现一个蓝色的 s 标记,可是新建立的项目有时候有,但有时候又没有这个标记,这就须要咱们打开相关设置 右键->Properties->spring,选中 Enable project specific settings,再把下面的都选中
而后选择 Beans Support,再选择右侧的Config Detection,把下面的全部选项都选中
而后再把 Dependenty Management 与 Spring Properties Editor右侧的选项选中,再更新项目,关闭再打开项目就能够看到 s 标记了
最后看起来是这样的;
这里说的依赖不是pom文件中的,而是STS新建maven项目时,不会把maven依赖加入到项目配置中,具体操做方法: 右键->Properties->Deployment Assembly 若是没有看到 Maven Dependencies,就要点击 Add
最后应该是这样的
在sts中运行maven构建的web项目有以下几种方式:
第一种我历来没用过
第二种我只用过tomcat,也只用它的部署功能,偶尔会用tomcat插件来运行一次进行测试
第三种是我经常使用的,这种方式最大的好处就是能够很方便的debug。须要注意的是,若是是spring web项目,则要注意Maven Dependencies有没有加载到项目中,正常来讲应该是这样的:
若是没有的话,那就按照上述添加 Maven依赖的方式添加。
代码和运行效果我就不贴了。