下面我們進(jìn)行SSI整合到Maven構(gòu)建的程序之中,首先你需要選定你需要整合的版本,因?yàn)镸aven依賴(lài)關(guān)系是需要指定Version的,下面是我整合所需要的SSI版本(我用Maven的依賴(lài)關(guān)系表示):
1 <!--Spring-->
2 <dependency>
3 <groupId>org.springframework</groupId>
4 <artifactId>spring</artifactId>
5 <version>2.5.6</version>
6 </dependency>
7 <!--Ibatis-->
8 <dependency>
9 <groupId>org.apache.ibatis</groupId>
10 <artifactId>ibatis-sqlmap</artifactId>
11 <version>2.3.4.726</version>
12 </dependency>
13 <!--Struts2-->
14 <dependency>
15 <groupId>org.apache.struts</groupId>
16 <artifactId>struts2-core</artifactId>
17 <version>2.1.8.1</version>
18 </dependency>
當(dāng)然有的新手可能會(huì)問(wèn),有些依賴(lài)我怎么知道Maven的官方依賴(lài)中有沒(méi)有呢,我怎么知道他有沒(méi)有這個(gè)版本的呢,其實(shí)解決辦法也很簡(jiǎn)單,大致可以分為兩種:
1、去Google上面搜索,你可以這樣搜索會(huì)更容易搜些:例如我們準(zhǔn)備搜下spring的版本,可以這樣寫(xiě)關(guān)鍵詞的“maven spring repository”,這樣搜索記錄的第一條基本上就是的。
2、自己在Maven本地的倉(cāng)庫(kù)中建立依賴(lài)關(guān)系,默認(rèn)是在.m2/repository文件夾下面,其中如何建立我不在詳細(xì)介紹,按照默認(rèn)的樣式建就可以的,如果是自己生成的Jar依賴(lài)的話,就必須用這種形式了。
那行,下面我們首先進(jìn)行Spring 所需的依賴(lài)配置,首先你在你的父Pom中的dependencies標(biāo)簽下面寫(xiě)上上述Spring的dependency,然后你執(zhí)行命令mvn eclipse:clean eclipse:eclipse,然后在你的eclipse的目錄結(jié)構(gòu)中就會(huì)spring-2.5.6.jar這個(gè)依賴(lài)的(ps.當(dāng)然這個(gè)你要在eclipse中配置一下你的path,這里我不在贅述),同樣配置Ibatis也是一樣的做法,下面我們首先把spring和ibatis整合起來(lái),其實(shí)如何整合最好的教程就是spring自帶的官方reference的,你可以參考上面的配置,七大概的位置實(shí)在中間層數(shù)據(jù)訪問(wèn)/使用ORM工具進(jìn)行數(shù)據(jù)訪問(wèn)(當(dāng)然我的是中文的reference)。
參考上面的配置我們即可配置一個(gè)demo,當(dāng)然在這里我們需要主要的是xml文件我們?yōu)榱私y(tǒng)一,我們都會(huì)放在verticalmarket-config子工程下面,所以讓我們?cè)趘erticalmarket-dal中引用這些xml配置文件的時(shí)候我們要配置項(xiàng)目依賴(lài)的,其配置和配置第三方包依賴(lài)差不多,下面是我的依賴(lài):
1 <dependency>
2 <groupId>com.tkz.verticalmarket</groupId>
3 <artifactId>verticalmarket-config</artifactId>
4 <version>1.0</version>
5 </dependency>
至于其他的一些靈活配置,大家最好看Maven的官方文檔資料,最重要的是多動(dòng)手實(shí)踐,這樣子才會(huì)發(fā)現(xiàn)問(wèn)題,更好的解決問(wèn)題。
下面我們構(gòu)建我們項(xiàng)目的骨架,假定我們的項(xiàng)目為verticalmarket的一個(gè)項(xiàng)目,那么我們知道這個(gè)父工程下面我們要為其建立子模塊,主要是把表示層、業(yè)務(wù)層及持久層分為不同的模塊,其項(xiàng)目結(jié)構(gòu)大致如下:
1 verticalmarket-dal
2 verticalmarket-manager
3 verticalmarket-service
4 verticalmarket-config
5 verticalmarket-web
當(dāng)然結(jié)構(gòu)可以隨意,按照你們自己約定俗成的就可以,這個(gè)僅為一個(gè)例子,下面就讓我們開(kāi)始創(chuàng)建這個(gè)工程,當(dāng)然Maven的一些基礎(chǔ)知識(shí)我不在說(shuō)明了,可以看下Sonatype公司的教程 Maven權(quán)威指南。
1、構(gòu)建verticalmarket的父母錄,在你的任意目錄下,打開(kāi)shell窗口(Windows的cmd),輸入命令:
1 mvn archetype:create -DgroupId=com.tkz.verticalmarket -DartifactId=verticalmarket
2、在生成的verticalmarket文件夾下面我們可以看到一個(gè)src文件夾和一個(gè)pom.xml,刪除src文件夾,然后修改pom文件
1 <?xml version="1.0" encoding="UTF-8"?>
2 <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/maven-v4_0_0.xsd">
3 <modelVersion>4.0.0</modelVersion>
4 <groupId>com.tkz.verticalmarket</groupId>
5 <artifactId>verticalmarket</artifactId>
6 <packaging>pom</packaging>
7 <version>1.0</version>
8 <name>verticalmarket</name>
9 <url>http://maven.apache.org</url>
10 <dependencyManagement>
11 <dependencies>
12 <dependency>
13 <groupId>junit</groupId>
14 <artifactId>junit</artifactId>
15 <version>4.0</version>
16 <scope>test</scope>
17 </dependency>
18 </dependencies>
19 </dependencyManagement>
20 </project>
其中修改的重點(diǎn)為打包方式改為pom形式,這也就意味這這是一個(gè)父工程,另外版本號(hào)默認(rèn)是SNAPSHOT意思是快照的意思,就是項(xiàng)目開(kāi)發(fā)中的意思,你要是看著不爽可以把它刪掉,另外需要說(shuō)明一下dependencyManagement標(biāo)簽,這個(gè)標(biāo)簽表示子類(lèi)可以隱式的繼承父pom文件的依賴(lài)庫(kù),在子pom中不需要指定版本號(hào),推薦這樣,這樣可以方便開(kāi)發(fā),你要修改什么依賴(lài)的版本只需要更改父pom就可以了,dependencies是顯示繼承,你要是在子pom中聲明,就必須寫(xiě)明版本號(hào),不寫(xiě)默認(rèn)就繼承了。
3、下面我們構(gòu)建子工程項(xiàng)目,進(jìn)入verticalmarket目錄下,輸入命令:
1 mvn archetype:create -DgroupId=com.tkz.verticalmarket -DartifactId=verticalmarket-dal -Dpackage=com.tkz.verticalmarket.dal
然后在父目錄下面就生成了verticalmarket-dal子工程,此時(shí)父pom文件自動(dòng)添加項(xiàng)目關(guān)系:
1 <modules>
2 <module>verticalmarket-dal</module>
3 </modules>
這就表示這個(gè)工程是verticalmarket子工程,同樣道理,其他命令如下:
1 mvn archetype:create -DgroupId=com.tkz.verticalmarket -DartifactId=verticalmarket-manager -Dpackage=com.tkz.verticalmarket.manager
2 mvn archetype:create -DgroupId=com.tkz.verticalmarket -DartifactId=verticalmarket-service -Dpackage=com.tkz.verticalmarket.service
3 mvn archetype:create -DgroupId=com.tkz.verticalmarket -DartifactId=verticalmarket-config -Dpackage=com.tkz.verticalmarket.config
4 mvn archetype:create -DgroupId=com.tkz.verticalmarket -DartifactId=verticalmarket-web -Dpackage=com.tkz.verticalmarket.web -DarchetypeArtifactId=maven-archetype-webapp
最后的-DarchetypeArtifactId=maven-archtype-webapp,表示這個(gè)是web程序結(jié)構(gòu),其他的默認(rèn)就是java程序結(jié)構(gòu)
4、然后可以執(zhí)行命令:
1 mvn eclipse:clean eclipse:eclipse
即生成了eclipse結(jié)構(gòu),導(dǎo)入到eclipse中你既可以看到你的一個(gè)多模塊程序,到目前為止這個(gè)程序骨架就算搭建完成了,下一步我們考慮如何整合SSI程序到這個(gè)多模塊程序中
網(wǎng)上其實(shí)整合框架的資料其實(shí)很多的,但是其中整合SSI的相對(duì)比較少的,如果是用Maven整合的就是少之又少的,如果是用Maven構(gòu)建的企業(yè)級(jí)應(yīng)用(多模塊開(kāi)發(fā))整合SSI框架的實(shí)例基本上是沒(méi)有的,所以寫(xiě)下這篇教程(當(dāng)然這個(gè)教程其實(shí)算是入門(mén)級(jí)的多模塊應(yīng)用程序開(kāi)發(fā)),希望那些新手們做類(lèi)似的開(kāi)發(fā)時(shí)可以少走些彎路,當(dāng)然也熱烈歡迎大牛指點(diǎn)不足。
廢話不再多說(shuō),下面我們開(kāi)始:
首先我們必須搭建起Maven運(yùn)行環(huán)境,當(dāng)然這里是在你已經(jīng)有Java運(yùn)行環(huán)境的前提這下進(jìn)行的:
1、下載Maven,現(xiàn)在最新版本為Maven 2.2.1,下載地址為http://maven.apache.org/download.html
2、解壓下載的apache-maven-2.2.1-bin.tar.gz(若你的是Windows環(huán)境你也可以選擇apache-maven-2.2.1-bin.zip,都是差不多的),到任意目錄下面,比如我的目錄為/home/用戶名/develop/programs。
3、配置Maven的環(huán)境變量,配置M2_HOME,例如我的配置M2_HOME=/home/用戶名/develop/programs/apache-maven-2.2.1,然后將M2_HOME加入到PATH當(dāng)中
4、驗(yàn)證Maven環(huán)境是否搭建成功,打開(kāi)shell窗口(Windows的cmd窗口),輸入命令:
命令如下:
如果出現(xiàn)下屬信息即算搭建成功:
顯示信息如下:
1 Apache Maven 2.2.1 (r801777; 2009-08-07 03:16:01+0800)
2 Java version: 1.6.0_18
3 Java home: /home/用戶名/develop/programs/jdk1.6.0_18/jre
4 Default locale: zh_CN, platform encoding: UTF-8
5 OS name: "linux" version: "2.6.31-20-generic" arch: "i386" Family: "unix"
5、此時(shí)環(huán)境已經(jīng)搭建OK了,下面我們就開(kāi)始Maven構(gòu)建企業(yè)級(jí)應(yīng)用開(kāi)發(fā)
在配置Mysql數(shù)據(jù)庫(kù)遠(yuǎn)程連接的過(guò)程中,防火墻和授權(quán)都已經(jīng)做了,可是還是不能鏈接上去,并且發(fā)現(xiàn)連接的時(shí)候報(bào)這個(gè)錯(cuò)誤ERROR 1042 (HY000): Can't get hostname for your address,
查了下資料可能是Mysql的DNS解析有問(wèn)題,只要我們?cè)趍ysql的配置文件my.cnf中配置如下代碼就可以連接成功了:
1 [mysqld]
2 skip-name-resolve
此時(shí)你再連接,就會(huì)發(fā)現(xiàn)能夠登陸遠(yuǎn)程機(jī)器的數(shù)據(jù)庫(kù)了。