Maven的pom实例

该pom中包含了一些我认为会需要的东西,并且加了注释。可以根据需求适当删减。

 包含了spring-mvc , junit,hibernate验证,json,apache-commons组件

还有 complier,cargo,surefire,jetty插件

  1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
  3     http://maven.apache.org/maven-v4_0_0.xsd">
  4     
  5     <!-- 下面7个设置就不用复制了,每个项目都不一样的 -->
  6     <modelVersion>4.0.0</modelVersion>
  7     <groupId>com.suyin</groupId>
  8     <artifactId>weixin</artifactId>
  9     <packaging>war</packaging>
 10     <version>0.0.1-SNAPSHOT</version>
 11     <name>weixin Maven Webapp</name>
 12     <url>http://maven.apache.org</url>
 13 
 14     <properties>
 15         <spring-version>4.0.6.RELEASE</spring-version>
 16         <junit-version>4.9</junit-version>
 17         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 18     </properties>
 19 
 20     <!-- 其实吧,如果你在ecplise中查看这个pom的继承树,你会发现好多都是重复的,完全可以不写:比如 spring-core,任何一个spring组件 -->
 21     <!-- 都依赖这个组件,并且也声明这个依赖啊,那么其实我们在这个pom中根本不必显式声明依赖 spring-core,Maven会自动帮我们处理这种依赖传递的。 -->
 22     <!-- 可是显式声明不是显得清楚明白一点么 -->
 23     <dependencies>
 24         <!--这个包要有,要不然在Controller中连HttpServletRequest都没法依赖了,不过在实际环境中容器会提供所以scope是provided -->
 25         <!-- 当然如果不是web项目那就肯定不需要了^_^ -->
 26         <dependency>
 27             <groupId>javax.servlet</groupId>
 28             <artifactId>javax.servlet-api</artifactId>
 29             <version>3.0.1</version>
 30             <scope>provided</scope>
 31         </dependency>
 32 
 33         <!-- 这个包未必要有,在jsp中,如果要写 out.print("xxx"); 那么如果没有这个包会发现key assistant根本没用了 -->
 34         <!-- 因为 out就是 javax.servlet.jsp.JspWriter的对象,而这个类就在这个包里面 -->
 35         <!-- 当然如果压根就没想过这么写,也可以不要这个组件 -->
 36         <dependency>
 37             <groupId>javax.servlet.jsp</groupId>
 38             <artifactId>jsp-api</artifactId>
 39             <version>2.2.1-b03</version>
 40             <scope>provided</scope>
 41         </dependency>
 42 
 43         <!-- spring 核心组件 开始 -->
 44         <dependency>
 45             <groupId>org.springframework</groupId>
 46             <artifactId>spring-core</artifactId>
 47             <version>${spring-version}</version>
 48         </dependency>
 49         <dependency>
 50             <groupId>org.springframework</groupId>
 51             <artifactId>spring-beans</artifactId>
 52             <version>${spring-version}</version>
 53         </dependency>
 54         <dependency>
 55             <groupId>org.springframework</groupId>
 56             <artifactId>spring-context</artifactId>
 57             <version>${spring-version}</version>
 58         </dependency>
 59         <dependency>
 60             <groupId>org.springframework</groupId>
 61             <artifactId>spring-context-support</artifactId>
 62             <version>${spring-version}</version>
 63         </dependency>
 64 
 65         <!-- spring expression是spring扩展el表达式的一个组件(SpEL) -->
 66         <!-- 一个最简单的应用使用cache时描述生成key的策略 -->
 67         <!-- 如有注解:@Cacheable(value="peoplecache",key="#root.method.name") -->
 68         <!-- 如果不需要用SpEL,就不要加这个组件了 -->
 69         <dependency>
 70             <groupId>org.springframework</groupId>
 71             <artifactId>spring-expression</artifactId>
 72             <version>${spring-version}</version>
 73         </dependency>
 74         <!-- spring 核心组件结束 -->
 75 
 76         <!-- spring web组件开始(看名字就知道要使用spring mvc的必须组件了) -->
 77         <dependency>
 78             <groupId>org.springframework</groupId>
 79             <artifactId>spring-web</artifactId>
 80             <version>${spring-version}</version>
 81         </dependency>
 82         <dependency>
 83             <groupId>org.springframework</groupId>
 84             <artifactId>spring-webmvc</artifactId>
 85             <version>${spring-version}</version>
 86         </dependency>
 87         <!-- spring web组件结束 -->
 88 
 89         <!-- aop(尽管不是十分清楚,但是如果要在xml中配置事务(声明性事务配置),我觉得就必须有这个组件;) -->
 90         <dependency>
 91             <groupId>org.springframework</groupId>
 92             <artifactId>spring-aop</artifactId>
 93             <version>${spring-version}</version>
 94         </dependency>
 95 
 96         <!-- 这里提供了对于AspectJ的整合,其实AspectJ是与spring-aop差不多但是可能功能多一点的框架 -->
 97         <!-- 一般情况下spring-aop就足够了,所以一般情况下也不需要这个组件 -->
 98         <dependency>
 99             <groupId>org.springframework</groupId>
100             <artifactId>spring-aspects</artifactId>
101             <version>${spring-version}</version>
102         </dependency>
103 
104         <!-- spring数据层,没啥说的,当然如果用其他的jdbc那就可以不要这个组件了 -->
105         <dependency>
106             <groupId>org.springframework</groupId>
107             <artifactId>spring-jdbc</artifactId>
108             <version>${spring-version}</version>
109         </dependency>
110         <!-- 提供事务管理,没啥说的 -->
111         <dependency>
112             <groupId>org.springframework</groupId>
113             <artifactId>spring-tx</artifactId>
114             <version>${spring-version}</version>
115         </dependency>
116 
117         <!-- 提过对junit和testng的支持,测试肯定要的 -->
118         <dependency>
119             <groupId>org.springframework</groupId>
120             <artifactId>spring-test</artifactId>
121             <version>${spring-version}</version>
122             <scope>test</scope>
123         </dependency>
124 
125         <!-- spring 不常用组件 开始 -->
126         <!-- 估计随着HTML5的发展,这个组件会变得常用 -->
127         <dependency>
128             <groupId>org.springframework</groupId>
129             <artifactId>spring-websocket</artifactId>
130             <version>${spring-version}</version>
131         </dependency>
132 
133         <!-- 这个组件提供对STOMP协议的支持,说实话从来没用过这个协议 -->
134         <dependency>
135             <groupId>org.springframework</groupId>
136             <artifactId>spring-messaging</artifactId>
137             <version>${spring-version}</version>
138         </dependency>
139 
140         <!-- 提供了对各个容器的扩展,似乎并不太需要 -->
141         <dependency>
142             <groupId>org.springframework</groupId>
143             <artifactId>spring-instrument</artifactId>
144             <version>${spring-version}</version>
145         </dependency>
146         <!-- 看名字就是提供对orm框架( JPA, JDO, and Hibernate)的支持 -->
147         <!-- 如果用Mybatis,那就不要这个组件了 -->
148         <dependency>
149             <groupId>org.springframework</groupId>
150             <artifactId>spring-orm</artifactId>
151             <version>${spring-version}</version>
152         </dependency>
153         <!-- 看名字就是xml与object的mapping了 。就是把xml和pojo这件来回转换。 -->
154         <dependency>
155             <groupId>org.springframework</groupId>
156             <artifactId>spring-oxm</artifactId>
157             <version>${spring-version}</version>
158         </dependency>
159         <!-- 看名字就是提供对jms的支持了 -->
160         <dependency>
161             <groupId>org.springframework</groupId>
162             <artifactId>spring-jms</artifactId>
163             <version>${spring-version}</version>
164         </dependency>
165         <!-- 提供了基于portlet的mvc实现(By the way,我目前接触后台的mvc都是基于servlet或者filter实现的,所有大部分时候是不要这个东西的) -->
166         <dependency>
167             <groupId>org.springframework</groupId>
168             <artifactId>spring-webmvc-portlet</artifactId>
169             <version>${spring-version}</version>
170         </dependency>
171         <!-- spring 不常用组件结束 -->
172         <dependency>
173             <groupId>junit</groupId>
174             <artifactId>junit</artifactId>
175             <version>${junit-version}</version>
176             <scope>test</scope>
177         </dependency>
178         <dependency>
179             <groupId>log4j</groupId>
180             <artifactId>log4j</artifactId>
181             <version>1.2.14</version>
182         </dependency>
183 
184         <!-- 没用过json,好意思说是程序员! -->
185         <dependency>
186             <groupId>net.sf.json-lib</groupId>
187             <artifactId>json-lib</artifactId>
188             <version>2.4</version>
189             <classifier>jdk15</classifier>
190         </dependency>
191 
192 
193 
194         <!-- 在spring-text组件中测试测试返回的json是什么,要下面两个包 -->
195         <dependency>
196             <groupId>net.minidev</groupId>
197             <artifactId>json-smart</artifactId>
198             <version>1.2</version>
199             <scope>test</scope>
200         </dependency>
201         <dependency>
202             <groupId>com.jayway.jsonpath</groupId>
203             <artifactId>json-path</artifactId>
204             <version>0.9.1</version>
205             <scope>test</scope>
206         </dependency>
207 
208         <dependency>
209             <groupId>mysql</groupId>
210             <artifactId>mysql-connector-java</artifactId>
211             <version>5.1.35</version>
212         </dependency>
213 
214         <!-- mybatis -->
215         <dependency>
216             <groupId>org.mybatis</groupId>
217             <artifactId>mybatis</artifactId>
218             <version>3.3.0</version>
219         </dependency>
220         <dependency>
221             <groupId>org.mybatis</groupId>
222             <artifactId>mybatis-spring</artifactId>
223             <version>1.2.3</version>
224         </dependency>
225 
226 
227         <!-- 这两个包是jstl表达式需要的包,jstl就是常用的 c:foreach;c:if什么的 -->
228         <dependency>
229             <groupId>taglibs</groupId>
230             <artifactId>standard</artifactId>
231             <version>1.1.2</version>
232         </dependency>
233         <dependency>
234             <groupId>jstl</groupId>
235             <artifactId>jstl</artifactId>
236             <version>1.2</version>
237         </dependency>
238         <!-- 使用hibernate进行数据校验需要下面这个组件,其实这个组件还依赖jboss-logging,validation-api等, -->
239         <!-- 不过maven会帮我们自动处理这个依赖的。 -->
240         <dependency>
241             <groupId>org.hibernate</groupId>
242             <artifactId>hibernate-validator</artifactId>
243             <version>5.1.3.Final</version>
244         </dependency>
245 
246         <!-- 不是说spring整合ehcache比较好吗?为什么不用呢 -->
247         <dependency>
248             <groupId>net.sf.ehcache</groupId>
249             <artifactId>ehcache-core</artifactId>
250             <version>2.6.0</version>
251         </dependency>
252 
253 
254         <!-- 下面是常用的apache的 commons-xxx -->
255         <dependency>
256             <groupId>commons-fileupload</groupId>
257             <artifactId>commons-fileupload</artifactId>
258             <version>1.3</version>
259         </dependency>
260         <dependency>
261             <groupId>commons-lang</groupId>
262             <artifactId>commons-lang</artifactId>
263             <version>2.6</version>
264         </dependency>
265         <dependency>
266             <groupId>commons-io</groupId>
267             <artifactId>commons-io</artifactId>
268             <version>2.4</version>
269         </dependency>
270         <dependency>
271             <groupId>commons-collections</groupId>
272             <artifactId>commons-collections</artifactId>
273             <version>3.2.1</version>
274         </dependency>
275         <dependency>
276             <groupId>commons-beanutils</groupId>
277             <artifactId>commons-beanutils</artifactId>
278             <version>1.9.2</version>
279         </dependency>
280 
281     </dependencies>
282 
283     <build>
284         <finalName>weixin</finalName>
285         <plugins>
286             <!-- 这个plugin 保证maven编译用的是java 1.7 -->
287             <plugin>
288                 <artifactId>maven-compiler-plugin</artifactId>
289                 <version>3.0</version>
290                 <configuration>
291                     <source>1.7</source>
292                     <target>1.7</target>
293                 </configuration>
294             </plugin>
295             <!-- 这个plugin配置保证在测试时以Abstract开头的类不进行测试 -->
296             <plugin>
297                 <groupId>org.apache.maven.plugins</groupId>
298                 <artifactId>maven-surefire-plugin</artifactId>
299                 <version>2.5</version>
300                 <configuration>
301                     <excludes>
302                         <exclude>**/**/Abstract*.java</exclude>
303                     </excludes>
304                 </configuration>
305             </plugin>
306 
307             <!-- 下面这个plugin是jetty容器插件 -->
308             <plugin>
309                 <groupId>org.mortbay.jetty</groupId>
310                 <artifactId>maven-jetty-plugin</artifactId>
311                 <version>6.1.10</version>
312                 <configuration>
313                     <scanIntervalSeconds>10</scanIntervalSeconds>
314                     <stopKey>foo</stopKey>
315                     <stopPort>9999</stopPort>
316                 </configuration>
317                 <executions>
318                     <execution>
319                         <id>start-jetty</id>
320                         <phase>pre-integration-test</phase>
321                         <goals>
322                             <goal>run</goal>
323                         </goals>
324                         <configuration>
325                             <scanIntervalSeconds>0</scanIntervalSeconds>
326                             <daemon>true</daemon>
327                         </configuration>
328                     </execution>
329                     <execution>
330                         <id>stop-jetty</id>
331                         <phase>post-integration-test</phase>
332                         <goals>
333                             <goal>stop</goal>
334                         </goals>
335                     </execution>
336                 </executions>
337             </plugin>
338             <!-- 这是cargo插件,不知道cargo是什么!好吧,cargo可以实现自动化部署 -->
339             <!-- 下面的配置就是把war包自动发送到192.168.128.137:8080的tomcat中 -->
340             <plugin>
341                 <groupId>org.codehaus.cargo</groupId>
342                 <artifactId>cargo-maven2-plugin</artifactId>
343                 <version>1.4.9</version>
344                 <configuration>
345                     <container>
346                         <containerId>tomcat7x</containerId>
347                         <type>remote</type>
348                     </container>
349                     <configuration>
350                         <type>runtime</type>
351                         <properties>
352                             <cargo.remote.uri>http://192.168.128.137:8080/manager/text</cargo.remote.uri>
353                             <cargo.remote.username>admin</cargo.remote.username>
354                             <cargo.remote.password>admin</cargo.remote.password>
355                         </properties>
356                     </configuration>
357                 </configuration>
358             </plugin>
359         </plugins>
360     </build>
361 
362 </project>
原文地址:https://www.cnblogs.com/formyjava/p/4698490.html