maven項目ssh框架的整合
阿新 • • 發佈:2019-01-26
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> 89 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框架的整合