自己動手用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM