自己动手用maven构建基于SSI的java EE应用

  上篇跟大家聊了聊maven的简单使用,之前也写了一篇搭建基于SSI(struts2,spring,ibatis)的javaEE开发环境的文章,但是那篇只是给初学者搭建一个简单的SSI应用的框架,其实我们发现问题了,jar越来越多,管理起来越来越混乱,在实际工作中,面向企业的开发中一个项目将会有更多的jar,更多的是一个团对对外做一个service,然后将service打包成jar,供其他团队使用。

  开始的时候可以通过聊天工具等将jar传给其他团队,但是一旦团队多了,jar包多了,这种传输还忙的过来吗?如果对jar升级呢,是不是又得重新传输一遍?是不是非常的不方便,而且又容易造成错误,因此迫切希望一种能管理jar的工具,实现一个团队上传到某个资源处,其他团队直接下载,当更新jar的时候,只需要修改版本号便可实现对service的更新,这种工具之一便是maven。

在本篇,将利用maven手把手教大家构建基于SSI(struts2、spring、ibatis)的java ee开发环境。

如果大家对maven还不够了解,请自己百度吧,如果对maven环境的搭建不熟悉,请参考LZ的上一篇用maven来创建web工程 。

好了,废话不多说了,开始进入正题。

1.构建maven web应用

利用mvn archetype:generate -DgroupId=com.yihaodian.backend -DartifactId=mywebapps  -DarchetypeArtifactId=maven-archetype-webapp -Dversion=1.0 构建一个maven应用,然后进入到项目执行mvn clean compile   ,结束后执行mvn eclipse:eclipse 、

这样就创建好项目了,然后导入到eclipse中。

当然要使eclipse支持maven,还需要下载一个插件m2e,这里就不详细展开了,大家可以参考Eclipse 安装SVN、Maven插件 - 雨之殇 - 博客园

2.搭建好目录结构,导入的工程(本篇为mywebapps)还需要改造一下目录结构

如图

3.移植之前没有经过maven的工程(搭建基于SSI(struts2,spring,ibatis)的javaEE开发环境中搭建的工程)中的一些类文件和配置文件到本工程中。

4.pom.xml文件改造:

对需要的jar文件添加maven支持。

  1  <properties>
  2           <!-- struts2 -->
  3           <commons-fileupload.version>1.2.1</commons-fileupload.version>
  4           <commons-io.version>1.3.2</commons-io.version>
  5           <commons-lang.version>2.5</commons-lang.version>
  6         <commons-logging.version>1.1.1</commons-logging.version>
  7         <freemarker.version>2.3.16</freemarker.version>
  8         <javassist.version>3.14.0-GA</javassist.version>
  9         <struts2-core.version>2.2.1.1</struts2-core.version>
 10         <xwork-core.version>2.2.1.1</xwork-core.version>
 11         <!-- struts2对json支持 -->
 12         <struts2-json-plugin.version>2.2.1.1</struts2-json-plugin.version>
 13         <!-- spring -->
 14         <spring.version>2.5.6.SEC02</spring.version>
 15         <struts2-spring-plugin.version>2.2.1.1</struts2-spring-plugin.version>
 16         <!-- spring AOP -->
 17         <aspectjrt.version>1.5.4</aspectjrt.version>
 18         <aspectjweaver.version>1.5.4</aspectjweaver.version>
 19         <cglib-nodep.version>2.2</cglib-nodep.version>
 20         <!-- spring jdbc -->
 21         <commons-dbcp.version>1.4</commons-dbcp.version>
 22         <commons-pool.version>1.5.4</commons-pool.version>
 23         <!-- spring 测试框架 -->
 24         <spring-test.version>2.5.6</spring-test.version>
 25         <!-- mysql -->
 26         <mysql-connector-java.version>5.1.25</mysql-connector-java.version>
 27         
 28         <!-- ibatis -->    
 29         <ibatis-sqlmap.version>2.3.4.726</ibatis-sqlmap.version>
 30         
 31         <!-- log4j日志 -->
 32         <log4j.version>1.2.16</log4j.version>
 33         
 34         <!-- junit单元测试 -->
 35         <junit.version>4.4</junit.version>
 36         
 37         <!-- maven个性化定制 -->
 38         <maven-dependency-plugin.version>2.1</maven-dependency-plugin.version>
 39           <maven-war-plugin.version>2.1.1</maven-war-plugin.version>
 40           <maven-antrun-plugin.version>1.6</maven-antrun-plugin.version>
 41           <maven-compiler-plugin.version>2.3.2</maven-compiler-plugin.version>
 42         <maven-eclipse-plugin.version>2.8</maven-eclipse-plugin.version>
 43         <maven-assembly-plugin.version>2.2</maven-assembly-plugin.version>
 44         
 45         <!-- 其他 -->
 46         <commons-beanutils.version>1.8.3</commons-beanutils.version>
 47         <commons-collections.version>3.2</commons-collections.version>
 48         <tomcat-jdbc.version>7.0.32</tomcat-jdbc.version>
 49         <aopalliance.version>1.0</aopalliance.version>
 50         <servlet-api.version>2.5</servlet-api.version>
 51         <commons-codec.version>1.6</commons-codec.version>
 52         <ezmorph.version>1.0.5</ezmorph.version>
 53         
 54     </properties>
 55   <dependencies>
 56       <!-- struts2 -->
 57           <dependency>
 58             <groupId>commons-io</groupId>
 59             <artifactId>commons-io</artifactId>
 60             <version>${commons-io.version}</version>
 61         </dependency>
 62         <dependency>
 63             <groupId>commons-fileupload</groupId>
 64             <artifactId>commons-fileupload</artifactId>
 65             <version>${commons-fileupload.version}</version>
 66         </dependency>
 67         <dependency>
 68             <groupId>commons-lang</groupId>
 69             <artifactId>commons-lang</artifactId>
 70             <version>${commons-lang.version}</version>
 71             <type>jar</type>
 72             <scope>compile</scope>
 73         </dependency>
 74         <dependency>
 75             <groupId>commons-logging</groupId>
 76             <artifactId>commons-logging</artifactId>
 77             <version>${commons-logging.version}</version>
 78             <type>jar</type>
 79             <scope>compile</scope>
 80         </dependency>
 81             <dependency>
 82             <groupId>org.apache.struts.xwork</groupId>
 83             <artifactId>xwork-core</artifactId>
 84             <version>${xwork-core.version}</version>
 85         </dependency>
 86         <dependency>
 87             <groupId>org.javassist</groupId>
 88             <artifactId>javassist</artifactId>
 89             <version>${javassist.version}</version>
 90             <type>jar</type>
 91             <scope>compile</scope>
 92         </dependency>
 93         <dependency>
 94             <groupId>org.apache.struts</groupId>
 95             <artifactId>struts2-core</artifactId>
 96             <version>${struts2-core.version}</version>
 97             <exclusions>
 98                 <exclusion>
 99                     <groupId>com.sun</groupId>
100                     <artifactId>tools</artifactId>
101                 </exclusion>
102                 <exclusion>
103                     <groupId>org.springframework</groupId>
104                     <artifactId>spring-orm</artifactId>
105                 </exclusion>
106                 <exclusion>
107                     <groupId>org.springframework</groupId>
108                     <artifactId>spring-test</artifactId>
109                 </exclusion>
110                 <exclusion>
111                   <groupId>opensymphony</groupId>
112                    <artifactId>ognl</artifactId>
113                </exclusion>
114             </exclusions>
115             <type>jar</type>
116             <scope>compile</scope>
117         </dependency>
118     <!-- freemarker -->
119         <dependency>
120             <groupId>org.freemarker</groupId>
121             <artifactId>freemarker</artifactId>
122             <version>${freemarker.version}</version>
123             <type>jar</type>
124             <scope>compile</scope>
125         </dependency>
126     
127     <!-- Spring -->
128     <dependency>
129             <groupId>org.springframework</groupId>
130             <artifactId>spring-orm</artifactId>
131             <version>${spring.version}</version>
132             <type>jar</type>
133             <scope>compile</scope>
134         </dependency>
135         <dependency>
136             <groupId>org.springframework</groupId>
137             <artifactId>spring-web</artifactId>
138             <version>${spring.version}</version>
139             <type>jar</type>
140             <scope>compile</scope>
141         </dependency>
142 
143         <dependency>
144             <groupId>org.springframework</groupId>
145             <artifactId>spring-tx</artifactId>
146             <version>${spring.version}</version>
147             <type>jar</type>
148             <scope>compile</scope>
149         </dependency>
150         <dependency>
151             <groupId>org.springframework</groupId>
152             <artifactId>spring-jdbc</artifactId>
153             <version>${spring.version}</version>
154             <type>jar</type>
155             <scope>compile</scope>
156         </dependency>
157         <dependency>
158             <groupId>org.springframework</groupId>
159             <artifactId>spring-context</artifactId>
160             <version>${spring.version}</version>
161             <type>jar</type>
162             <scope>compile</scope>
163         </dependency>
164         <dependency>
165             <groupId>org.springframework</groupId>
166             <artifactId>spring-aop</artifactId>
167             <version>${spring.version}</version>
168             <type>jar</type>
169             <scope>compile</scope>
170         </dependency>
171         <dependency>
172             <groupId>org.springframework</groupId>
173             <artifactId>spring-core</artifactId>
174             <version>${spring.version}</version>
175             <type>jar</type>
176             <scope>compile</scope>
177         </dependency>
178         <dependency>
179             <groupId>org.springframework</groupId>
180             <artifactId>spring-beans</artifactId>
181             <version>${spring.version}</version>
182             <type>jar</type>
183             <scope>compile</scope>
184         </dependency>
185         <dependency>
186             <groupId>org.springframework</groupId>
187             <artifactId>spring-context-support</artifactId>
188             <version>${spring.version}</version>
189             <type>jar</type>
190             <scope>compile</scope>
191         </dependency>
192         <dependency>
193             <groupId>org.springframework</groupId>
194             <artifactId>spring-webmvc</artifactId>
195             <version>${spring.version}</version>
196             <type>jar</type>
197             <scope>compile</scope>
198         </dependency>
199         
200         <!-- struts2与spring集成 -->
201         <dependency>
202             <groupId>org.apache.struts</groupId>
203             <artifactId>struts2-spring-plugin</artifactId>
204             <version>${struts2-spring-plugin.version}</version>
205             <type>jar</type>
206             <scope>compile</scope>
207             <exclusions>
208                 <exclusion><!-- 排除spring-core,以避免版本冲突 -->
209                     <groupId>org.springframework</groupId>
210                     <artifactId>sping-core</artifactId>
211                 </exclusion>
212             </exclusions>
213         </dependency>
214         
215         <!-- Sppring AOP -->
216         <dependency>
217             <groupId>org.aspectj</groupId>
218             <artifactId>aspectjweaver</artifactId>
219             <version>${aspectjweaver.version}</version>
220             <type>jar</type>
221             <scope>compile</scope>
222         </dependency>
223         <dependency>
224             <groupId>org.aspectj</groupId>
225             <artifactId>aspectjrt</artifactId>
226             <version>${aspectjrt.version}</version>
227             <type>jar</type>
228             <scope>compile</scope>
229         </dependency>
230         <dependency>
231             <groupId>cglib</groupId>
232             <artifactId>cglib-nodep</artifactId>
233             <version>${cglib-nodep.version}</version>
234             <type>jar</type>
235             <scope>compile</scope>
236         </dependency>
237         
238         <!-- spring jdbc -->
239         <dependency>
240             <groupId>commons-dbcp</groupId>
241             <artifactId>commons-dbcp</artifactId>
242             <version>${commons-dbcp.version}</version>
243             <type>jar</type>
244             <scope>compile</scope>
245         </dependency>
246         <dependency>
247             <groupId>commons-pool</groupId>
248             <artifactId>commons-pool</artifactId>
249             <version>${commons-pool.version}</version>
250             <type>jar</type>
251             <scope>compile</scope>
252         </dependency>
253         
254                 <!-- Spring测试框架 -->
255         <dependency>
256             <groupId>org.springframework</groupId>
257             <artifactId>spring-test</artifactId>
258             <version>${spring-test.version}</version>
259             <scope>test</scope>
260         </dependency>
261         
262           <!-- mysql驱动 -->
263        <dependency>
264               <groupId>mysql</groupId>
265               <artifactId>mysql-connector-java</artifactId>
266               <version>${mysql-connector-java.version}</version>
267        </dependency>
268         <!-- ibatis -->
269         <dependency>  
270             <groupId>org.apache.ibatis</groupId>  
271             <artifactId>ibatis-sqlmap</artifactId>  
272             <version>${ibatis-sqlmap.version}</version>  
273         </dependency> 
274     
275         <!-- log4j日志 -->
276         <dependency>
277             <groupId>log4j</groupId>
278             <artifactId>log4j</artifactId>
279             <version>${log4j.version}</version>
280         </dependency>
281     
282         <!-- 
283             以下部分是为了兼容Tomcat7做准备,如果已经使用了Tomcat7的话可以不引入
284             其中版本号为7.0.32,是为了兼容最新的Tomcat7版本号,其代码与7.0.30完全相同(通过MD5逐一校验每个Java文件之后确认),之前已经部署了的Pool可以不用修改。
285         -->
286         <dependency>
287             <groupId>org.apache.tomcat</groupId>
288             <artifactId>tomcat-jdbc</artifactId>
289             <version>${tomcat-jdbc.version}</version>
290         </dependency>
291         
292         <!-- JUnit start -->
293         <dependency>
294             <groupId>junit</groupId>
295             <artifactId>junit</artifactId>
296             <version>${junit.version}</version>
297             <scope>test</scope>
298         </dependency>
299 
300         <dependency>
301             <groupId>aopalliance</groupId>
302             <artifactId>aopalliance</artifactId>
303             <version>${aopalliance.version}</version>
304             <type>jar</type>
305             <scope>compile</scope>
306         </dependency>
307         <dependency>
308             <groupId>javax.servlet</groupId>
309             <artifactId>servlet-api</artifactId>
310             <version>${servlet-api.version}</version>
311             <type>jar</type>
312             <scope>compile</scope>
313         </dependency>
314 
315         <dependency>
316             <groupId>commons-beanutils</groupId>
317             <artifactId>commons-beanutils</artifactId>
318             <version>${commons-beanutils.version}</version>
319             <type>jar</type>
320             <scope>compile</scope>
321         </dependency>
322 
323         <dependency>
324             <groupId>commons-collections</groupId>
325             <artifactId>commons-collections</artifactId>
326             <version>${commons-collections.version}</version>
327         </dependency>
328         <!-- struts2对json支持 -->
329         <dependency>
330             <groupId>org.apache.struts</groupId>
331             <artifactId>struts2-json-plugin</artifactId>
332             <version>${struts2-json-plugin.version}</version>
333             <type>jar</type>
334         </dependency>

说明:(1).此处为了maven的升级以及版本公用,用到了maven的properties属性,在properties中定义变量,然后在全文便可以对其使用,采用${变量名}的语法。

   (2).本文加了相对比较多的jar,并作了比较详细的注释,大家要是用不到,可以去掉一些,有些jar不是必须的

5.使maven将jar包打包到指定地点:

此处我是将mavan打包到工程的src/main/webapp/WEB-INF/lib,方便开发调试。

 1 <!-- 复制jar包到WEB-INF/lib以便开发调试 -->
 2         <plugin>
 3             <groupId>org.apache.maven.plugins</groupId>
 4             <artifactId>maven-dependency-plugin</artifactId>
 5             <version>${maven-dependency-plugin.version}</version>
 6             <executions>
 7                 <execution>
 8                     <id>copy</id>
 9                     <phase>package</phase>
10                     <goals>
11                         <goal>copy-dependencies</goal>
12                     </goals>
13                     <configuration>
14                         <outputDirectory>src/main/webapp/WEB-INF/lib</outputDirectory>
15                     </configuration>
16                 </execution>
17             </executions>
18         </plugin>

 6生成war包,并生成MD5加密

 1 <!-- 生成war包,并写SVN当前版本号1 -->
 2         <plugin>
 3             <groupId>org.apache.maven.plugins</groupId>
 4             <artifactId>maven-war-plugin</artifactId>
 5             <version>${maven-war-plugin.version}</version>
 6             <configuration>
 7                 <warName>${project.artifactId}-${project.version}-${SVN.committedRevision}</warName>
 8                 <packagingExcludes>statics/**,statics-111/**</packagingExcludes>
 9             </configuration>
10         </plugin>
11         
12         <!-- 生成MD5校验文件1 -->
13             <plugin>
14                 <artifactId>maven-antrun-plugin</artifactId>
15                 <version>${maven-antrun-plugin.version}</version>
16                 <executions>
17                     <execution>
18                         <phase> package </phase>
19                         <configuration>
20                             <target>
21                                 <checksum>
22                                     <fileset dir="target">
23                                         <include name="*" />
24                                     </fileset>
25                                 </checksum>
26                             </target>
27 
28                         </configuration>
29                         <goals>
30                             <goal>run</goal>
31                         </goals>
32                     </execution>
33                 </executions>
34             </plugin>

这样,利用maven构建的基于SSI框架的J2EE工程就搭建好了。

唉,本希望上传我搭建好的工程给大家,供大家下载,无奈无法上传附件,只好作罢,有需要的小伙伴们直接留言吧,我直接发给你。

ps:现在我已经将工程上传至github:https://github.com/shunyang/mywebapps

原文地址:https://www.cnblogs.com/shunyang/p/3439078.html