CI學習一:maven項目自動部署到tomcat

鋪墊: html

    在原來公司,技術總監是一個很是有能力的人,能夠說是搞技術的人的一個風向標、一個標杆。他在公司內部搭建了一套持續集成(Continuous integration,簡稱CI,原理的話,網上不少,再也不累述)的架子,使用的jinkens+maven/ant,還在jinkens上集成了一些其餘的插件,如sonar等。 java

    技術總監對代碼質量要求很是高,固然,這也是把一個產品作好的必要一步。 web

    實際上,在他的這一套東西下,公司的項目一每天變好,代碼質量愈來愈高,體系更健全,流程更清晰,開發人員的自覺性和編碼能力都有所提升。 apache

    如今從原來公司出來了,仔細想一想,尚未本身掌握這一套東西。好的東西,就應該被傳承下去,因此最近開始本身學習CI一套的東西。 windows

說明: tomcat

    我本身學習東西的時候,自制力不強,因此通常沒有很體系地去學習,文章可能也寫得沒什麼條理(典型的理科生,想到什麼說什麼),因此在文章結構上但願你們體諒下。 app

廢話很少了,開工: eclipse

    首先搭建一個簡單的CI基礎:一個maven項目,自動部署到tomcat webapp

    我在作這個DEMO的時候,其實已經集成到了jinkens上,可是一直在自動部署的這一塊出問題,後來我就單獨用命令在驗證了,因此和jinkens繼承的內容放到後面(可能下一章)來說。之因此單獨一章來說自動部署這一塊,是因爲我發現網上不少的文章都說得很是含糊(主要參考StackOverflow),好了,廢話很少說了。 maven

    準備材料:

        一、maven project(不詳細講解如何創建project,請參考個人其餘博客)

        二、tomcat(6或者7均可以,有一點小差異,後面講到)

        三、maven3.0.5

    開發環境:jdk7+tomcat7+windows7 x64 +eclipse

    第一步:配置tomcat

        不管你是tomcat7或者tomcat6,修改%TOMCAT_HOME%/conf/tomcat-users.xml,在裏面添加用戶。

        高能警告:下面的<role></role>標籤,在tomcat的原來默認配置裏面,只有<role rolename="tomcat" />和<role rolename="role1" />,若是隻使用這兩種配置的話,是沒法再http://localhost:8080/manager下登陸的,會出現403錯誤(因爲沒有manager-gui角色權限),若是沒有配置<role rolename="manager-script" /><role rolename="manager-jmx" />,而且在roles裏面添加進去,會在自動部署的時候,出現Cannot invoke Tomcat manager: Connection reset by peer錯誤(這個問題我搞了一天,在StackOverflow上不少相似的問題,可是都沒提別提醒是這個地方出的問題

<role rolename="tomcat" />
	<role rolename="role1" />
	<!-- tomcat的默認註釋掉的代碼裏面沒有下面四中角色,必定要加上,否則會出現不少錯誤 -->
	<role rolename="admin" />
	<role rolename="manager-gui" />
	<role rolename="manager-script" />
	<role rolename="manager-jmx" />
	
	<user username="admin" password="admin" roles="tomcat,manager-gui" />
	<user username="both" password="tomcat" roles="tomcat,role1,manager-gui" />
	<!-- 這個是我用到的用戶,roles裏面的角色名很重要 -->
	<user username="tomcat" password="tomcat" roles="role1,manager-gui,tomcat,admin,manager-script,manager-jmx" />



    第二步:配置maven的settings.xml文件


        個人settings.xml在%MAVEN_HOME%/conf下,在<servers>節點內,添加以下代碼

<server>
      <id>tomcatServer</id>
	  <!-- server login name -->
      <username>tomcat</username>
	  <!-- server login password -->
      <password>tomcat</password>
    </server>


    第三步:配置pom.xml

        在<plugins>節點內,添加以下代碼,

        高能警告:tomcat7-maven-plugin插件裏的<url>裏是http://localhost:8080/manager/text,不是http://localhost:8080/manager/html

<build>
		<finalName>myweb</finalName>
		<defaultGoal>install</defaultGoal>
		<sourceDirectory>src/main/java</sourceDirectory>
		<resources>
			<resource>
				<directory>src/main/java</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/*.properties</include>
					<include>**/*.xml</include>
				</includes>
			</resource>
		</resources>
		<plugins>
			<!-- 打包插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.5.1</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.2</version>
				<configuration>
					<warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>
					<version>3.0</version>
					<failOnMissingWebXml>false</failOnMissingWebXml>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.12.4</version>
				<configuration>
					<skipTests>true</skipTests>
					<testFailureIgnore>true</testFailureIgnore>
				</configuration>
			</plugin>
			
			<!-- 自動部署到tomcat -->
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<!-- tomcat7 -->
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>2.1</version>
				
				<!-- 若是是tomcat6,則使用tomcat-maven-plugin  1.1版本
				<artifactId>tomcat-maven-plugin</artifactId>
				<version>1.1</version>
				 -->
				<configuration>
					<url>http://localhost:8080/manager/text</url>
					<server>tomcatServer</server>
					<path>/myweb</path>
				</configuration>
			</plugin>
		</plugins>
	</build>



    第四步:運行maven命令,自動編譯-打包-部署

        首先啓動tomcat。

        使用CMD命令,進入項目的根目錄,而後運行命令:mvn -U clean package tomcat7:deploy(若是是tomcat的插件,那麼使用mvn -U clean package tomcat:deploy命令),若是是從新部署,則把deploy改爲redeploy。

    最後看到BUILD SUCCESS則表示部署成功了

    在%TOMCAT_HOME%/webapps下,可以看到咱們部署的系統

    補充:

        這也是我剛纔實驗發現的,當使用CMD命令運行了maven命令自動部署後,驚奇地發現,沒有重啓tomcat,新部署的myweb項目也啓動了,而且能夠訪問。下圖是運行命令時,tomcat的日誌

相關文章
相關標籤/搜索