Hudson+maven+svn+sonar搭建CI環境(web篇)--上

  前些日子研究了CI的具體流程,在過程遇到許多意料以外的困難,如今終於爬出坑,特此將經驗分享給你們,但願你們少走寫彎路html

  須要:java

  JDK1.5及以上版本web

  tomcatspring

  Hudsonapache

  svnjson

  Mavenapi

  Nexus(作Maven遠程倉庫用,非必須)tomcat

  sonareclipse

  eclipsemaven

1.SVN

  svn的搭建就不提了,你們請自行搜索

 

2.Maven

  首先去官網http://maven.apache.org/download.cgi下載maven,將下載的文件解壓,而後配置maven環境

  新建變量:

  變量名:M2_HOME

  變量值:D:\maven-3.2.3\apache-maven-3.2.3

  找到path,加入;%M2_HOME%\bin;

  運行cmd,輸入mvn -v

  ok,第一步完成;

  maven倉庫用來存放咱們項目依賴的jar包,maven默認的倉庫路徑是(你本身的user路徑)/.m2/repository,咱們可不想某天重裝系統的時候把這裏面的東西清空,因此咱們須要修改倉庫路徑,首先建立一個你本身的倉庫文件(例如個人D:\maven\repo),而後打開(你本身的maven路徑)\apache-maven-3.2.3\conf,找到setting.xml文件,在裏面找到<localRepository>,改爲你本身的倉庫路徑。


這裏改的是私有倉庫,有關maven倉庫的內容,請戳這裏

若是想利用Nexus設置一個公司級的遠程倉庫,讓你們從公司級的遠程倉庫中下載依賴,免去一個依賴每一個人都要下載一遍的煩惱,請戳這裏

 

完成以後cmd運行mvn help:system;若是運行過程當中無錯,咱們會在本身的倉庫文件中發現已經多了不少文件,這些文件就是maven從中央庫下載下來的。

 

 

 PS:

若是用Eclipse做爲IDE的話(或許intelliJ會更好?),去安裝m2e(eclipse支持maven的插件),有離線和在線安裝兩種方式,就和安裝其餘的插件方法相似。

安裝完成後就能夠去建立項目或將已有項目弄到maven上來,對於新建立項目,你們能夠去查閱蟲師寫的文章《maven環境快速搭建》,文章介紹了從cmd建立maven項目,你們也能夠在eclipse(已安裝m2e插件)裏直接建立maven project;這裏由於我是將已有項目改爲maven結構,就只介紹後者的作法。

對於已有項目,直接對項目右鍵-->Configure-->Convert to maven project

這裏由於博主是web項目因此packaging選擇打成war包。

完成後你的項目結構會發生一點變化,而後我們進入pom.xml

在pom.xml中找到以下字段(若是沒有就添加上),明眼人能夠直接看出其實<sourceDirectory>...</sourceDirectory>其實就是你的源碼路徑,<directory>...</directory>就是你的資源路徑,只要讓maven知道你的源碼在哪,資源庫在哪,它就會自動去運行這些文件。(下文有完整的pom.xml文件)

而後檢查一下maven的相關設置是否已經配置好(通常m2e插件會幫我們弄)

右鍵-->properties-->java build path-->Libraries查找一下有沒有M2_REPO,

若是沒有,點擊Add Library自行添加。

而後查看Source

若是源碼文件夾沒有設置Output folder,點擊Edit,輸入

完成後回到pom.xml,開始編輯,下面是個人pom.xml文件

<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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>mcrm_web</groupId>
  <artifactId>mcrm_web</artifactId>
  <version>1.0.2</version>
  <packaging>war</packaging>

  <!-- 這裏是爲了讓sonar在編譯時按UTF-8來編譯 -->
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies>
  
    <!-- 這部分是個人項目依賴的jar包 -->
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.1.1.RELEASE</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20131018</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>tomcat</groupId> <artifactId>servlet-api</artifactId> <version>5.5.23</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-servlet_3.0_spec</artifactId> <version>1.0</version> <scope>provided</scope> </dependency>
    
     <!-- 這個依賴我沒有在中央庫裏找到,因此把他變成本地的了-->
<!-- 本地依賴 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.1.1.RELEASE</version> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.6</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.directory.studio</groupId> <artifactId>org.apache.commons.lang</artifactId> <version>2.6</version> <scope>provided</scope> </dependency> <!-- 本地依賴 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>3.1.1.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> </dependencies> <build>

  <!-- 告訴maven個人源文件位置-->
<sourceDirectory>src</sourceDirectory>


  <!-- 告訴maven個人資源庫在哪-->
<resources> <resource> <directory>src</directory>


    <!-- 告訴maven在編譯時不要將後綴是.java的文件放進war包裏 -->
<excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources> <plugins> <plugin>
    
     <!-- 編譯插件 -->
<artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration>
<source>1.6</source> <target>1.6</target> <encoding>utf8</encoding> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <warSourceDirectory>web</warSourceDirectory> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build> </project>

 在POM中,你須要註明全部非JDK自帶的依賴,這些依賴的版本號和名稱都是特定的,在maven倉庫中你能找到大部分所須要的依賴,例如我們須要找spring-context這個jar包,進入倉庫中,輸入spring-context,找到本身所須要的那個,選擇合適版本,而後直接將對應的groupid和artifactld以及version寫入pom中,例如:

但有些時候我們依賴的jar包在倉庫中查詢不到,這時我們就須要手動添加jar包,例如:

這個jar包我沒有在maven倉庫中找到,就直接把jar包扔進了相應的路徑中

~\repo\org\springframework\spring-jdbc\3.1.1.RELEASE(這些文件夾原來是沒有的,都是我本身建的)

將這些東西作完後,就能夠run一下看看了,有兩種方式,第一種是在cmd中,進入項目所在的目錄中(保證這個目錄下有pom.xml),運行mvn clean install。第二種方式是在eclipse中右鍵-->Run As--> Maven install 。

可能出現的錯誤:

若是編譯出錯,報出缺乏某些包的話,看好是哪些包,直接去maven倉庫中找,找到後寫入pom.xml中。

若是出現亂碼的話,在pom.xml中加上讓maven以UTF-8來編譯。

 

若是編譯成功了,那我們能夠在項目目錄\target下找到打包好的war包,把它直接扔到tomcat裏,試試能不能運行吧。(這裏我遇到一個問題,新打的war包不會把最新的.class文件放進去,而是放最先編譯完成的,個人解決方法是將\target\classes裏的東西扔到項目目錄\web\WEB-INF\classes裏再打包一次,應該是某處設置有誤,但如今我還未找到)

 至此,CI的maven部分就基本介紹完了,下篇將介紹hudson和sonar部分。

 

 

參考文章:

[1]maven環境快速搭建 - 蟲師 - 博客園

[2]Myeclipse 8.5 配置SVN - ewyb - 博客園

[3]Maven 詳解 - 小菜鳥的博客 - 博客頻道 - CSDN

[4]如何在maven中添加本地jar包 - maven - ITeye羣組

[5]Nexus入門指南(圖文)-juvenshun-ITeye羣組

[6]Maven最佳實踐:Maven倉庫-juvenshun-ITeye羣組

相關文章
相關標籤/搜索