您的位置:首页 > 其它

121 项目 004 笔记向 sts 新建 Maven 工程

2016-09-12 00:00 344 查看
新建一个Maven工程之后看起来是这样的



可以看出我我们需要的结构有很大差别,比如说JDK的版本不对,source folder也莫名其妙的只有一个,junit的依赖也太老了...

修改pom

对于我现在的程序来说,也许没有hibernate和spring data jpa,没有freemarker,也没有其它什么东西,但是如下几个东西是一定会有的:

spring

apache commons

json

logback

junit

jstl

所以我的初始化pom是这样的:

<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版本。

servlet 3.0 支持

这个时候还不能开始写代码,因为在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 中的 s 标记

在STS中,如果一个类由spring管理,或者是spring的配置文件,则会出现一个蓝色的 s 标记,但是新创建的项目有时候有,但有时候又没有这个标记,这就需要我们打开相关设置
右键->Properties->spring,选中 Enable project specific settings,再把下面的都选中



然后选择 Beans Support,再选择右侧的Config Detection,把下面的所有选项都选中



然后再把 Dependenty Management 与 Spring Properties Editor右侧的选项选中,再更新项目,关闭再打开项目就可以看到 s 标记了

最后看起来是这样的;



为项目添加 Maven依赖

这里说的依赖不是pom文件中的,而是STS新建maven项目时,不会把maven依赖加入到项目配置中,具体操作方法:
右键->Properties->Deployment Assembly
如果没有看到 Maven Dependencies,就要点击 Add





最后应该是这样的



关于项目运行

在sts中运行maven构建的web项目有如下几种方式:

导出war包,放到tomcat中

jetty或者tomcat插件

新建一个 tomcat server 运行

第一种我从来没用过

第二种我只用过tomcat,也只用它的部署功能,偶尔会用tomcat插件来运行一次进行测试

第三种是我常用的,这种方式最大的好处就是可以很方便的debug。需要注意的是,如果是spring web项目,则要注意Maven Dependencies有没有加载到项目中,正常来说应该是这样的:



如果没有的话,那就按照上述添加 Maven依赖的方式添加。

代码和运行效果我就不贴了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: