該文檔主體爲去年底自主學習時總結,旨在爲我司提供一套企業級持續集成解決方案。這篇文章如今看上去很稚嫩,可是當時花費了許多心血。但願將當時的學習心得拿出來與你們交流。該文檔主要說明了jenkins持續集成部署的相關步驟,並着重實現了權限分組,郵件配置,插件配置的jenkins實現過程。對出現的問題進行解決,是一套持續集成的解決方案。html
持續集成Continuous integrationjava |
|
提出web |
針對複雜度高的項目提出「早集成,常集成,頻繁集成」來幫助項目在早期發現項目風險和質量問題數據庫 |
做用apache
|
減小風險編程 |
減小重複過程api |
|
任什麼時候間、任何地點生成可部署的軟件瀏覽器 |
|
加強項目的可見性tomcat |
|
創建團隊對開發產品的信心安全 |
|
概念 |
持續集成是一種軟件開發實踐,對於提升軟件開發效率並保障軟件開發質量提供了理論基礎。持續集成是一種軟件開發實踐,對於提升軟件開發效率並保障軟件開發質量提供了理論基礎。 |
Jenkins前身爲Hudson,更名後被oracle收購,目前沒有調解。都用於持續、自動的構建項目(持續集成),使開發者從繁雜的集成中解脫出來,專一於更爲重要的業務邏輯實現上。同時 Jenkins 能實施監控集成中存在的錯誤,提供詳細的日誌文件和提醒功能,還能用圖表的形式形象地展現項目構建的趨勢和穩定性。
Hudson的war包下載地址: http://mirrors.neusoft.edu.cn/eclipse/hudson/war/
Jenkins的war包下載地址: http://mirrors.jenkins-ci.org/war/
(下載後刪除版本號,並確認JAVA與Tomcat安裝正確)
1. cmd: java -jar D:/jenkins/jenkins.war
browser: http://localhost:8080/
2. 將jenkins.war放入tomcat下webapps目錄下,
browser: http://localhost:8080/jenkins
1. D:\apache-tomcat-6.0.43\conf目錄下新建jenkins.xml文件
<Context docBase="D:/jenkins/jenkins.war"> <Environment name="JENKINS_HOME" type="java.lang.String" value="D:/jenkins/jenkins.war" override="true"/> </Context>
2. D:\apache-tomcat-6.0.43\webapps\jenkins\WEB-INF\web.xml
<env-entry> <env-entry-name>HUDSON_HOME</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>D:\jenkins</env-entry-value> </env-entry>
3. 重啓tomcat
或者設置環境變量Jenkins_HOME並重啓計算機。
1. browser: 系統管理-插件安裝-已安裝 。默認狀況下,SVN與Maven插件安裝完畢。
鏈接192.168.0.11遠程服務器,安裝tomcat,將jenkins.war放入tomcat下webapps目錄下。
啓動tomcat。
打開瀏覽器,訪問域名http://192.168.0.11:8080/jenkins/
此時在服務器端tomcat統計目錄下生成jenkins文件。
系統管理 – 啓用安全 – 安全域 – Jenkins專有用戶數據庫 – 容許用戶註冊
使用插件Role Strategy
參考資料:http://blog.csdn.net/zhaolixin007/article/details/7751875
Admin用戶具備全部權限,匿名用戶和其餘用戶爲只讀權限。
當svn代碼被提交時,jenkins會自動註冊該svn用戶的用戶名密碼,因此須要註冊好svn有關人員的用戶。方便郵件管理時使用。
系統設置:
管理項目/全局分組:
分配項目/全局角色:
至此咱們配置出一套簡單的權限管理方案。
在郵箱中開啓SMTP服務,默認端口爲465或…
163,126郵箱默認註冊開啓POP3和SMTP。
163的SMTP的服務器地址是smtp.163.com。(企業級郵箱不相同)詳細配置在目錄 5.
因爲maven核心作的事情都是抽象的構建過程,不少實際的工做都是具體的插件來實現。因此很顯然,maven以插件的方式集成。
安裝插件findbugs(依賴analysis-core) Pmd Codestyle Violations等
在jenkins中須要安裝版本對應的插件,不然提示可更新或者降到。
安裝完畢插件須要在服務器重啓tomcat。
參考資料:http://www.cnblogs.com/zhangchuan210/p/3413811.html
findbugs |
基於Bug Patterns概念,查找javabytecode(.class文件)中的潛在bug。如NullPoint空指針檢查、沒有合理關閉資源、字符串相同判斷錯(==,而不是equals)等 |
Pmd |
檢查Java源文件中的潛在問題。主要包括:空try/catch/finally/switch語句塊。 未使用的局部變量、參數和private方法。空if/while語句。過於複雜的表達式,如沒必要要的if語句等。複雜類。 |
Codestyle |
檢查Java源文件是否與代碼規範相符。Javadoc註釋,命名規範,多餘沒用的Imports,Size度量,如過長的方法,缺乏必要的空格Whitespace,重複代碼 |
安裝插件後,在maven項目中配置pom.xml。
詳見附錄。
CMD測試(D: \workspace\com.sapphire)
mvn clean test
mvn findbugs:findbugs
mvn pmd:pmd
mvn checkstyle:checkstyle
新建一個maven工程的軟件項目,並關聯。
基本信息:
在第一次設置時,可能須要填寫遠程服務器訪問用戶名密碼,這裏我使用rensifei:******
驗證成功後,可鏈接svn對應源碼。
例如,表達式中填寫0,15,30,45 * * * *將使Hudson每隔15分鐘就檢查一次源碼倉庫的變
化。
語法所表明的含義:
minute |
0~59 |
hour |
0~23 |
day |
1~31 |
month |
1~12 |
week |
0~7 |
0 * * * * 表示的就是每一個小時的第0分鐘執行一次構建。這裏設置天天24點發送持續集成報告,jenkins每隔15分鐘檢測一次svn庫源碼是否更新,每更新一次,進行一次構建。
Pre steps能夠添加構建前的批處理、ant等命令。
Goals and options: 構建須要執行的命令
MAVEN_OPTS: 可配參數,如 –Dmaven.test.skip=true,跳過測試。
具體配置項參考:
安裝完插件後,在 全局設置 郵件配置上方 與 工程設置 添加構建後操做 都產生新的配置項。
說明:163企業smtp服務器。SSL協議端口465,163郵箱默認開啓smtp服務。
設置EMAIL EXT全局環境變量。
1 <hr/>(本郵件爲持續集成環境自動下發,請勿回覆!)<br/><hr/> 2 3 項目名稱: $PROJECT_NAME<br/><hr/> 4 5 構建編號: $BUILD_NUMBER<br/><hr/> 6 7 源版本號: ${SVN_REVISION}<br/><hr/> 8 9 構建狀態: $BUILD_STATUS<br/><hr/> 10 11 觸發緣由: ${CAUSE}<br/><hr/> 12 13 版本變化:<br/> 14 15 上次成功: ${CHANGES_SINCE_LAST_SUCCESS, reverse=true}<br/> 16 17 上次失敗:${CHANGES_SINCE_LAST_UNSTABLE, reverse=true}<br/><hr/> 18 19 測試數量:${TEST_COUNTS}<br/> 20 21 失敗數量:${TEST_COUNTS, var="fail"}<br/> 22 23 跳過數量:${TEST_COUNTS, var="skip"}<br/> 24 25 <hr/><br/><br/> 26 27 日誌地址:<a href="${BUILD_URL}console"> view console </a><br/><hr/><br/><br/> 28 29 構建地址:<a href="$BUILD_URL"> view build url </a><br/><hr/> 30 31 變動集:${JELLY_SCRIPT,template="html"}<br/><hr/>
<XXX@sapphire.cn>,<XXX@sapphire.cn>,<XXX@sapphire.cn>,<XXX@sapphire.cn>,<XXX@sapphire.cn>,<cc:XXX@sapphire.cn>
在下方添加觸發器,觸發器包括:構建流產,構建前,穩固,成功,失敗,不穩固等。
每一種事件都要配置觸發器和對應的接收人列表。
我在這裏配置了 Failure-Any Success Unstable(Test Failures) Failure-Still
Unstable(Tesf Failures)/Failure>Success Faillure>Unstable
確認後默認版本不升級。
解決方法:
進行備份遷移。
在每次構建後,繼續進行jenkins配置,都會產生如上錯誤致使jenkins崩潰。
解決方法:
修改%MAVEN_HOME%\bin\mvn.bat
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
set MAVEN_OPTS= -Xms256m –Xmx1024m
肯定問題爲沒有測試用例致使顯示爲空。
測試數量:${TEST_COUNTS}取不到值。
Maven工程test結果:
解決方法:
在maven-surefire-plugin插件配置configuration中:
若是添加includes標籤,應把默認test任務補全。
<includes><!-- 添加測試命名規則 -->
<include>**/*Tests.java</include><include>**/*Test.java</include>
</includes>
成功圖例:
郵件顯示:
Pom配置有問題,理解maven-surefire-plugin maven-surefire-report-plugin插件做用。
Surefire插件:依賴junit jar包將指定(這裏爲src/test/java)中指定文件名稱Test中包含的test方法進行測試。包含了集成測試的思想。
Surefire-report插件:將測試結果以report形式展現,還能夠經過整合造成特定xml文件。
解決方法:
具體配置在附錄中。
緣由肯定爲沒有出現findbugs問題,不提示findbugs warning。未安裝violations插件,致使圖表不顯示。在配置成功後,job構建結果成功後,在列表左側顯示PMD warning與Findbugs warning。(可能列表太長顯示不出來。)
解決方法:
Violations插件做用爲將warning視圖化顯示。
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <project 4 5 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 6 7 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 8 9 <modelVersion>4.0.0</modelVersion> 10 11 <groupId>com.sapphire</groupId> 12 13 <artifactId>com.sapphire</artifactId> 14 15 <version>1.0-SNAPSHOT</version> 16 17 <packaging>pom</packaging> 18 19 <name>sapphire</name> 20 21 <modules> 22 23 <module>sapphire.dependencies</module> 24 25 <module>sapphire.formmeta</module> 26 27 <module>sapphire.formmeta.api</module> 28 29 <module>sapphire.workflow</module> 30 31 <module>sapphire.workflow.api</module> 32 33 <module>sapphire.web</module> 34 35 </modules> 36 37 38 39 40 41 42 43 <!-- 指定屬性 --> 44 45 <properties> 46 47 <version>1.0-SNAPSHOT</version> 48 49 <jdk.version>1.7</jdk.version> 50 51 </properties> 52 53 54 55 <distributionManagement> 56 57 <snapshotRepository> 58 59 <id>snapshot-distributed</id> 60 61 <name>snapshot-distributed</name> 62 63 <url>http://192.168.0.11:8081/nexus/content/repositories/sapphire_mall/</url> 64 65 </snapshotRepository> 66 67 </distributionManagement> 68 69 70 71 <repositories> 72 73 <repository> 74 75 <id>repo-release</id> 76 77 <name>repo-release</name> 78 79 <url>http://192.168.0.11:8081/nexus/content/groups/Sapphire</url> 80 81 </repository> 82 83 </repositories> 84 85 86 87 <build> 88 89 <!-- 默認源代碼和資源文件目錄配置 --> 90 91 <sourceDirectory>src/main/java </sourceDirectory> 92 93 <testSourceDirectory>src/test/java</testSourceDirectory> 94 95 <resources> 96 97 <resource> 98 99 <directory>src/main/resources</directory> 100 101 </resource> 102 103 </resources> 104 105 <testResources> 106 107 <testResource> 108 109 <directory>src/test/resources</directory> 110 111 </testResource> 112 113 </testResources> 114 115 <!-- 如何拓展源代碼資源文件夾 http://acooly.iteye.com/blog/1814673 --> 116 117 118 119 <pluginManagement><!-- 由子pom子文件決定是否引用 --> 120 121 <plugins> 122 123 <!-- 指定JDK的編譯版本 --> 124 125 <plugin> 126 127 <groupId>org.apache.maven.plugins</groupId> 128 129 <artifactId>maven-compiler-plugin</artifactId> 130 131 <version>2.5.1</version> 132 133 <configuration> 134 135 <source>${jdk.version}</source> 136 137 <target>${jdk.version}</target> 138 139 <showWarnings>true</showWarnings> 140 141 </configuration> 142 143 </plugin> 144 145 <plugin> 146 147 <groupId>org.apache.maven.plugins</groupId> 148 149 <artifactId>maven-resources-plugin</artifactId> 150 151 <version>2.6</version> 152 153 <configuration> 154 155 <encoding>UTF-8</encoding> 156 157 <source>${jdk.version}</source><!-- 源代碼編譯版本 --> 158 159 <target>${jdk.version}</target><!-- 目標平臺編譯版本 --> 160 161 <showWarnings>true</showWarnings> 162 163 </configuration> 164 165 </plugin> 166 167 </plugins> 168 169 </pluginManagement> 170 171 <plugins> 172 173 <!-- findbugs plugin --> 174 175 <plugin> 176 177 <groupId>org.codehaus.mojo</groupId> 178 179 <artifactId>findbugs-maven-plugin</artifactId> 180 181 <version>3.0.0</version> 182 183 <configuration> 184 185 <threshold>High</threshold> <!-- 級別高 --> 186 187 <findbugsXmlOutput>true</findbugsXmlOutput> 188 189 <findbugsXmlWithMessages>true</findbugsXmlWithMessages> 190 191 <!-- dashboard use this to union report --> 192 193 <xmlOutput>true</xmlOutput> 194 195 <effort>Max</effort> 196 197 <formats> 198 199 <format>html</format> 200 201 </formats> 202 203 </configuration> 204 205 </plugin> 206 207 <!-- pmd plugin --> 208 209 <plugin> 210 211 <groupId>org.apache.maven.plugins</groupId> 212 213 <artifactId>maven-pmd-plugin</artifactId> 214 215 <version>3.0.1</version> 216 217 <configuration> 218 219 <linkXref>true</linkXref> 220 221 <sourceEncoding>utf-8</sourceEncoding> 222 223 <minimumTokens>100</minimumTokens> 224 225 <targetJdk>1.6</targetJdk> 226 227 <!-- rulesets> <ruleset>target/pmd.xml</ruleset> </rulesets --> 228 229 </configuration> 230 231 </plugin> 232 233 234 235 <!-- 單元測試插件Junit --> 236 237 <plugin> 238 239 <groupId>org.apache.maven.plugins</groupId> 240 241 <artifactId>maven-surefire-plugin</artifactId> 242 243 <version>2.18</version> 244 245 246 247 <configuration> 248 249 <!-- 參數行命令 --> 250 251 <argLine>-Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m</argLine> 252 253 <parallel>methods</parallel> 254 255 <threadCount>10</threadCount> 256 257 <!-- skipTests爲true發佈時候自動跳過單元測試 --> 258 259 <skipTests>false</skipTests> 260 261 <includes><!-- 添加測試命名規則 --> 262 263 <include>**/*Tests.java</include> 264 265 <include>**/*Test.java</include> 266 267 </includes> 268 269 <formats> 270 271 <format>html</format> 272 273 </formats> 274 275 </configuration> 276 277 <!--依賴junit插件,修改junit版本等。 --> 278 279 <dependencies> 280 281 <dependency> 282 283 <groupId>junit</groupId> 284 285 <artifactId>junit</artifactId> 286 287 <version>4.11</version> 288 289 </dependency> 290 291 </dependencies> 292 293 </plugin> 294 295 296 297 </plugins> 298 299 </build> 300 301 302 303 <reporting> 304 305 <plugins> 306 307 <!-- add ut report and findbugs report --> 308 309 <plugin> 310 311 <groupId>org.apache.maven.plugins</groupId> 312 313 <artifactId>maven-surefire-report-plugin</artifactId> 314 315 <version>2.18</version> 316 317 <configuration> 318 319 <showSuccess>false</showSuccess> 320 321 </configuration> 322 323 </plugin> 324 325 <!-- add report url to check for error --> 326 327 <plugin> 328 329 <groupId>org.apache.maven.plugins</groupId> 330 331 <artifactId>maven-jxr-plugin</artifactId> 332 333 <version>2.5</version> 334 335 <reportSets> 336 337 <reportSet> 338 339 <id>aggregate</id> 340 341 <reports> 342 343 <report>aggregate</report> 344 345 <report>test-aggregate</report> 346 347 </reports> 348 349 </reportSet> 350 351 </reportSets> 352 353 </plugin> 354 355 <!-- add findbugs report --> 356 357 <plugin> 358 359 <groupId>org.codehaus.mojo</groupId> 360 361 <artifactId>findbugs-maven-plugin</artifactId> 362 363 <version>3.0.0</version> 364 365 </plugin> 366 367 <!-- add pmd report --> 368 369 <plugin> 370 371 <groupId>org.apache.maven.plugins</groupId> 372 373 <artifactId>maven-pmd-plugin</artifactId> 374 375 <version>3.3</version> 376 377 </plugin> 378 379 </plugins> 380 381 </reporting> 382 383 384 385 <dependencies><!-- junit 父工程測試範圍使用 --> 386 387 <dependency> 388 389 <groupId>junit</groupId> 390 391 <artifactId>junit</artifactId> 392 393 <version>4.10</version> 394 395 <scope>test</scope> 396 397 </dependency> 398 399 </dependencies> 400 401 </project>
構建工具 |
將軟件編譯、測試、部署等步驟聯繫在一塊兒加以自動化 |
跨平臺 |
JAVA編寫 |
操做簡單 |
Build.xml編程 |
自動構建部署 |
XML構建文件—Target樹—執行Task(實現特定接口對象) |
Src |
文件 |
Class |
編譯文件 |
Lib |
JAR包 |
Dist |
打包、發佈代碼 |
一個構建文件(build.xml)定義一個項目(project)包括多個目標(target),目標中有依賴關係,每一個目標包括多個任務(task)與任務序列。
核心任務 |
Ant自帶任務 |
可選任務 |
第三方任務,附加Jar文件 |
自定義任務 |
用戶自定義開發的任務 |
ANT_HOME |
apache-ant安裝目錄 |
PATH |
;%ANT_HOME%\bin |
<?xml version="1.0"?>
<project name="helloWorld">
<target name="sayHelloWorld">
<echo message="Hello,this is ant!"/>
</target>
</project>
Ant默認爲build.xml文件,若是不是修改成 ant –file test.xml [targetName]
name |
project元素名稱 |
default |
默認執行target名稱 |
basedir |
基路徑位置(默認Ant構件文件的附目錄) |
<project name="helloWorld" default="sayHelloWorld" basedir="D:\">
<target name="sayHelloWorld">
<echo message="Hello,this is ant!"/>
<echo message="the base dir is : ${basedir}"/>
</target>
</project>
查看project目錄下全部target
name |
Target元素名稱,必須且在project中惟一 |
depends |
依賴,多個依賴用」,」隔開,按順序執行 |
if |
驗證屬性是否存在,不存在則不執行 |
unless |
驗證屬性是否存在,不存在則執行 |
description |
功能描述 |
<target name="sayVersion" if="ant.java.version">
<echo message="JAVA Version : ${ant.java.version}"
</target>
<target name="dependSV" depends="sayVersion" unless="amigo">
<description>a depend example!</description>
<echo message="the base dir is : ${basedir}"/>
</target>
導入property屬性的方式有兩種:
一是在project中直接設置,
二是寫在build.properties文件中,而後<property file=」 build.properties」>導入。
該實例輸出一些內置屬性和property屬性
<target name="example" depends="someBuiltIn">
<echo message="name: ${name}, age: ${age}"/>
</target>
<property name="name" value="rensifei"/>
<property name="age" value="22"/>
<target name="someBuiltIn">
<echo message="basedir: ${basedir}"/>
<echo message="ant.file: ${ant.file}"/>
<echo message="ant.version: ${ant.version}"/>
<echo message="ant.project.name: ${ant.project.name}"/>
<echo message="ant.java.version: ${ant.java.version}"/>
</target>
Copy |
|
Delete |
|
Mkdir |
|
Move |
|
Echo |
根據日誌或監控器的級別輸出信息 |
詳細見工程javacTest及其build.xml文件。
Findbugs 是一個靜態分析工具,它檢查類或者 JAR 文件,將字節碼與一組缺陷模式進行對比以發現可能的問題。利用這個工具,就能夠在不實際運行程序的狀況對軟件進行分析。它能夠幫助改進代碼的質量。可做爲Eclipse插件來使用。
這裏咱們整合進maven使用。
在build.xml文件中配置findbugs能夠將ant與findbugs整合。
1 <project name="項目名" default="all"> 2 3 <property name="findbugs.home" value="findbugs解壓路徑" /> 4 5 <path id="findbugs.path"> 6 7 <fileset dir="findbugs解壓路徑"> 8 9 <include name="**/*.jar" /> 10 11 </fileset> 12 13 </path> 14 15 <taskdef name="findbugs" 16 17 classname="edu.umd.cs.findbugs.anttask.FindBugsTask" 18 19 classpathref="findbugs.path" /> 20 21 <!-- 定義findbugs的home,findbugs的task要使用 --> 22 23 <target name="findbugs"> 24 25 <findbugs home="${findbugs.home}" 26 27 output="xml:withMessages" outputFile="生成的文件"> 28 29 <!-- 以上定義findbugs查找的類路徑 --> 30 31 <auxClasspath path="${findbugs.home}/lib/findbugs-ant.jar" /> 32 33 <auxClasspath> 34 35 <fileset dir="lib" includes="*.jar" /> 36 37 </auxClasspath> 38 39 <sourcePath path="源文件路徑" /> 40 41 <class location="生成類路徑" /> 42 43 </findbugs> 44 45 </target> 46 47 </project>
實例:
1 <project name="Calendar" default="all"> 2 3 <property name="findbugs.home" value="../../findbugs-1.3.8" /> 4 5 <path id="findbugs.path"> 6 7 <fileset dir="../../findbugs-1.3.8"> 8 9 <include name="**/*.jar" /> 10 11 </fileset> 12 13 </path> 14 15 <taskdef name="findbugs" 16 17 classname="edu.umd.cs.findbugs.anttask.FindBugsTask" 18 19 classpathref="findbugs.path" /> 20 21 <!-- 定義findbugs的home,findbugs的task要使用 --> 22 23 <target name="findbugs"> 24 25 <mkdir dir="target/findbugs"/> 26 27 <findbugs home="${findbugs.home}" output="xml:withMessages" 28 29 outputFile="target/findbugs/calendar-fb.xml"> 30 31 <!-- 以上定義findbugs查找的類路徑 --> 32 33 <auxClasspath path="${findbugs.home}/lib/findbugs-ant.jar" /> 34 35 <auxClasspath> 36 37 <fileset dir="lib" includes="*.jar" /> 38 39 </auxClasspath> 40 41 <sourcePath path="src" /> 42 43 <class location="target/classes" /> 44 45 </findbugs> 46 47 </target> 48 49 </project>
設置好Ant的環境後,在命令中使用ant -f build.xml,或者在Eclipse直接運行build.xml文件,運行後生成了一個xml文件,若是你想用Html的格式查看findbugs的結果,能夠把output屬性設爲:html。這樣就能夠經過Html來查看findbugs的結果了。
參考資料:
http://tntxia.iteye.com/blog/604714
Maven的核心是抽象的構建過程,實際操做由插件完成。
1 <!--配置插件下載地址 --> 2 3 <pluginRepositories> 4 5 <pluginRepository> 6 7 <id>Codehaus repository</id> 8 9 <url>http://repository.codehaus.org/</url> 10 11 </pluginRepository> 12 13 </pluginRepositories> 14 15 <plugin> 16 17 <groupId>org.codehaus.mojo</groupId> 18 19 <artifactId>findbugs-maven-plugin</artifactId> 20 21 <version>3.0.0</version> 22 23 <configuration> 24 25 <effort>Default</effort> 26 27 <!-- findbugs xml輸出 --> 28 29 <findbugsXmlOutput>true</findbugsXmlOutput> 30 31 <!-- findbugs xml輸出路徑 --> 32 33 <findbugsXmlOutputDirectory>target/site</findbugsXmlOutputDirectory> 34 35 </configuration> 36 37 </plugin>
D: \
Cd D:\workspace\com.sapphire
mvn clean
mvn package
Mvn Findbugs指令 |
|
mvn findbugs:help |
查看findbugs插件的幫助 |
mvn findbugs:check |
檢查代碼是否經過findbugs檢查,若是沒有經過檢查,檢查會失敗,但檢查不會生成結果報表 |
mvn findbugs:findbugs |
檢查代碼是否經過findbugs檢查,若是沒有經過檢查,檢查不會失敗,會生成結果報表保存在target/findbugsXml.xml文件中 |
mvn findbugs:gui |
查代碼並啓動gui界面來查看結果 |
mvn findbugs:gui
在maven設置中添加pom.xml的goals and options
構建時
在Eclipse下maven測試時產生error
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile
Fatal error compiling: tools.jar not found: C:\Program Files (x86)\Java\jre7\..\lib\tools.jar
解決方案:修改了properties裏面jre instaill裏面的jre路徑(設置爲javahome)
Checkstyle可執行任務以下:
mvn checkstyle:help |
查看checkstyle-plugin的幫助 |
mvn checkstyle:check |
檢查工程是否知足checkstyle的檢查,若是沒有知足,檢查會失敗,能夠經過target/site/checkstyle.html查看。 |
mvn checkstyle:checkstyle |
檢查工程是否知足checkstyle的檢查,若是沒有知足,檢查不會失敗,能夠經過target/site/checkstyle.html查看。 |
mvn checkstyle:checkstyle-aggregate |
檢查工程是否知足checkstyle的檢查,若是沒有知足,檢查不會失敗,能夠經過target/site/checkstyle.html查看。 |
在運行完「mvn checkstyle:checkstyle」命令後,能夠運行"mvn jxr:jxr"來使checkstyle的結果能夠直接跳轉到代碼行位置。