1. 程式人生 > >maven項目ssh框架的整合

maven項目ssh框架的整合

xmlns 都是 ssh框架 info XML 傳遞 action 5.0 maven項目

1.環境

eclipse版本:Eclipse Mars2 4.5
jdk版本:1.8
maven版本:apache-maven 3.3.9zhnegs
這是主要的開發工具版本,ssh的各種jar包版本就不列舉了。

2.依賴傳遞與依賴沖突的解決

在整合開始前需要先介紹依賴傳遞與依賴沖突的問題;
依賴傳遞:
技術分享圖片

如圖。可以看到在pom文件中只是導入了struts的核心包,在項目中去將核心包依賴的jar包全部都導入進來,這種依賴關系就會產生依賴傳遞。

依賴沖突:那如何會沖突呢,在整合ssh框架中,項目采用的包會有重復,那麽就會產生問題,你希望導入的包並沒有導入。

技術分享圖片jar包

解決方案:
  第一聲明原則:先導入有高版本的jar包

 1 <dependencies>
 2   <!--   spring-beans-4.2.4 -->
 3       <dependency>
 4           <groupId>org.springframework</groupId>
 5           <artifactId>spring-context</artifactId>
 6           <version>4.2.4.RELEASE</version>
 7       </dependency>
 8
9 10 <!-- spring-beans-3.0.5 --> 11 <dependency> 12 <groupId>org.apache.struts</groupId> 13 <artifactId>struts2-spring-plugin</artifactId> 14 <version>2.3.24</version> 15 </dependency>

  路徑最短優先原則:即放棄依賴導入,直接單獨導入該包

1     <dependency>
2           <groupId>org.springframework</groupId>
3           <artifactId>spring-beans</artifactId>
4           <version>4.2.4.RELEASE</version>
5       </dependency>

  排除原則:

 1       <dependency>
 2           <groupId>org.apache.struts</groupId>
 3           <artifactId>struts2-spring-plugin</artifactId>
 4           <version>2.3.24</version>
 5           <exclusions>
 6             <exclusion>
 7               <groupId>org.springframework</groupId>
 8               <artifactId>spring-beans</artifactId>
 9             </exclusion>
10           </exclusions>
11       </dependency>

  版本鎖定原則:

 1 <properties>
 2         <spring.version>4.2.4.RELEASE</spring.version>
 3         <hibernate.version>5.0.7.Final</hibernate.version>
 4         <struts.version>2.3.24</struts.version>
 5     </properties>
 6 
 7     <!-- 鎖定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
 8     <dependencyManagement>
 9         <dependencies>
10             <dependency>
11                 <groupId>org.springframework</groupId>
12                 <artifactId>spring-context</artifactId>
13                 <version>${spring.version}</version>
14             </dependency>
15 </dependencies>
16 </dependencyManagement>

3.pom文件整合

技術分享圖片
  1 <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/xsd/maven-4.0.0.xsd">
  2   <modelVersion>4.0.0</modelVersion>
  3   <groupId>com.lsd.maven-web</groupId>
  4   <artifactId>maven-ssh</artifactId>
  5   <version>0.0.1-SNAPSHOT</version>
  6   <packaging>war</packaging>
  7   
  8   
  9     <!-- 屬性 -->
 10     <properties>
 11         <spring.version>4.2.4.RELEASE</spring.version>
 12         <hibernate.version>5.0.7.Final</hibernate.version>
 13         <struts.version>2.3.24</struts.version>
 14     </properties>
 15 
 16     <!-- 鎖定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
 17     <dependencyManagement>
 18         <dependencies>
 19             <dependency>
 20                 <groupId>org.springframework</groupId>
 21                 <artifactId>spring-context</artifactId>
 22                 <version>${spring.version}</version>
 23             </dependency>
 24             <dependency>
 25                 <groupId>org.springframework</groupId>
 26                 <artifactId>spring-aspects</artifactId>
 27                 <version>${spring.version}</version>
 28             </dependency>
 29             <dependency>
 30                 <groupId>org.springframework</groupId>
 31                 <artifactId>spring-orm</artifactId>
 32                 <version>${spring.version}</version>
 33             </dependency>
 34             <dependency>
 35                 <groupId>org.springframework</groupId>
 36                 <artifactId>spring-test</artifactId>
 37                 <version>${spring.version}</version>
 38             </dependency>
 39             <dependency>
 40                 <groupId>org.springframework</groupId>
 41                 <artifactId>spring-web</artifactId>
 42                 <version>${spring.version}</version>
 43             </dependency>
 44             <dependency>
 45                 <groupId>org.hibernate</groupId>
 46                 <artifactId>hibernate-core</artifactId>
 47                 <version>${hibernate.version}</version>
 48             </dependency>
 49             <dependency>
 50                 <groupId>org.apache.struts</groupId>
 51                 <artifactId>struts2-core</artifactId>
 52                 <version>${struts.version}</version>
 53             </dependency>
 54             <dependency>
 55                 <groupId>org.apache.struts</groupId>
 56                 <artifactId>struts2-spring-plugin</artifactId>
 57                 <version>${struts.version}</version>
 58             </dependency>
 59         </dependencies>
 60     </dependencyManagement>
 61     <!-- 依賴管理 -->
 62     <dependencies>
 63         <!-- spring -->
 64         <dependency>
 65             <groupId>org.springframework</groupId>
 66             <artifactId>spring-context</artifactId>
 67         </dependency>
 68         <dependency>
 69             <groupId>org.springframework</groupId>
 70             <artifactId>spring-aspects</artifactId>
 71         </dependency>
 72         <dependency>
 73             <groupId>org.springframework</groupId>
 74             <artifactId>spring-orm</artifactId>
 75         </dependency>
 76         <dependency>
 77             <groupId>org.springframework</groupId>
 78             <artifactId>spring-test</artifactId>
 79         </dependency>
 80         <dependency>
 81             <groupId>org.springframework</groupId>
 82             <artifactId>spring-web</artifactId>
 83         </dependency>
 84         <!-- hibernate -->
 85         <dependency>
 86             <groupId>org.hibernate</groupId>
 87             <artifactId>hibernate-core</artifactId>
 88         </dependency>
 89 
 90         <!-- 數據庫驅動 -->
 91         <dependency>
 92             <groupId>mysql</groupId>
 93             <artifactId>mysql-connector-java</artifactId>
 94             <version>5.1.6</version>
 95             <scope>runtime</scope>
 96         </dependency>
 97         <!-- c3p0 -->
 98 
 99         <dependency>
100             <groupId>c3p0</groupId>
101             <artifactId>c3p0</artifactId>
102             <version>0.9.1.2</version>
103         </dependency>
104 
105 
106         <!-- 導入 struts2 -->
107         <dependency>
108             <groupId>org.apache.struts</groupId>
109             <artifactId>struts2-core</artifactId>
110         </dependency>
111         <dependency>
112             <groupId>org.apache.struts</groupId>
113             <artifactId>struts2-spring-plugin</artifactId>
114         </dependency>
115 
116         <!-- servlet jsp -->
117         <dependency>
118             <groupId>javax.servlet</groupId>
119             <artifactId>servlet-api</artifactId>
120             <version>2.5</version>
121             <scope>provided</scope>
122         </dependency>
123         <dependency>
124             <groupId>javax.servlet</groupId>
125             <artifactId>jsp-api</artifactId>
126             <version>2.0</version>
127             <scope>provided</scope>
128         </dependency>
129         <!-- 日誌 -->
130         <dependency>
131             <groupId>org.slf4j</groupId>
132             <artifactId>slf4j-log4j12</artifactId>
133             <version>1.7.2</version>
134         </dependency>
135         <!-- junit -->
136         <dependency>
137             <groupId>junit</groupId>
138             <artifactId>junit</artifactId>
139             <version>4.9</version>
140             <scope>test</scope>
141         </dependency>
142         <!-- jstl -->
143         <dependency>
144             <groupId>javax.servlet</groupId>
145             <artifactId>jstl</artifactId>
146             <version>1.2</version>
147         </dependency>
148     </dependencies>
149 
150     <build>
151         <plugins>
152             <!-- 設置編譯版本為1.7 -->
153             <plugin>
154                 <groupId>org.apache.maven.plugins</groupId>
155                 <artifactId>maven-compiler-plugin</artifactId>
156                 <configuration>
157                     <source>1.7</source>
158                     <target>1.7</target>
159                     <encoding>UTF-8</encoding>
160                 </configuration>
161             </plugin>
162 
163             <!-- maven內置 的tomcat6插件 -->
164             <plugin>
165                 <groupId>org.codehaus.mojo</groupId>
166                 <artifactId>tomcat-maven-plugin</artifactId>
167                 <version>1.1</version>
168                 <configuration>
169                     <!-- 可以靈活配置工程路徑 -->
170                     <path>/ssh</path>
171                     <!-- 可以靈活配置端口號 -->
172                     <port>8080</port>
173                 </configuration>
174             </plugin>
175 
176         </plugins>
177     </build>
178   
179   
180 </project>
pom.xml

建議整合時先手動確定版本在進行導入

4.配置ssh項目
註意:有些配置文件需要在接口或者類同級目錄下,那麽需要在maven項目的resource文件夾下創建一個相同路徑的目錄

dao(這裏將model層類一起包含,可以再細分):domain模型類、dao接口、dao實現類、hibernate核心配置文件、對應的映射關系文件、將dao配置進spring管理

service:service接口、service實現類、spring管理註冊service

action:action類、struts2配置文件、web.xml配置

都是ssh基本整合,這裏不過多解釋,主要介紹maven項目的導包。


  

maven項目ssh框架的整合