?
搞了3天,終于搞定了maven + hudson + p4的集成配置。
下面一一介紹下各個(gè)工具的使用。
Maven:
?
-
安裝 , 解壓縮,設(shè)置環(huán)境變量:
C:\Users\tobrien > set M2_HOME=c:\Program Files\maven-2.0.9
C:\Users\tobrien > set PATH=%PATH%;%M2_HOME%\bin
-
Maven 目錄結(jié)構(gòu):
pom.xml | Maven’s POM, which is always at the top-level of a project. |
LICENSE.txt | A license file is encouraged for easy identification by users and is optional. |
README.txt | A simple note which might help first time users and is optional. |
target/ | Directory for all generated output. This would include compiled classes, generated sources that may be compiled, the generated site or anything else that might be generated as part of your build. |
target/generated-sources/plugin-id <plugin-id> <plugin-id> <plugin-id></plugin-id> </plugin-id> </plugin-id> | Standard location for generated sources. For example, you may generate some sources from a JavaCC grammar. |
src/main/java/ | Standard location for application sources. |
src/main/resources/ | Standard location for application resources. |
src/main/filters/ | Standard location for resource filters. |
src/main/assembly/ | Standard location for assembly filters. |
src/main/config/ | Standard location for application configuration filters. |
src/test/java/ | Standard location for test sources. |
src/test/resources/ | Standard location for test resources. |
src/test/filters/ | Standard location for test resource filters. |
?
?
-
mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch03 -DartifactId=simple -DpackageName=org.sonatype.mavenbook
?
?
?
?
groupId
?
groupId:
團(tuán)體,公司,小組,組織,項(xiàng)目,或者其它團(tuán)體。團(tuán)體標(biāo)識(shí)的約定是,它以創(chuàng)
建這個(gè)項(xiàng)目的組織名稱的逆向域名 (reverse domain name) 開頭。來(lái)自 Sonatype
的項(xiàng)目有一個(gè)以 com.sonatype 開頭的 groupId ,而 Apache Software 的項(xiàng)目有以
org.apache 開頭的 groupId 。
ArtifactId:
在 groupId 下的表示一個(gè)單獨(dú)項(xiàng)目的唯一標(biāo)識(shí)符。
Version:
一個(gè)項(xiàng)目的特定版本。發(fā)布的項(xiàng)目有一個(gè)固定的版本標(biāo)識(shí)來(lái)指向該項(xiàng)目的某一個(gè)
特定的版本。而正在開發(fā)中的項(xiàng)目可以用一個(gè)特殊的標(biāo)識(shí),這種標(biāo)識(shí)給版本加上
一個(gè)“ SNAPSHOT” 的標(biāo)記。
項(xiàng)目的打包格式也是 Maven 坐標(biāo)的重要組成部分,但是它不是項(xiàng)目唯一標(biāo)識(shí)符的一個(gè)部
分。一個(gè)項(xiàng)目的 groupId:artifactId:version 使之成為一個(gè)獨(dú)一無(wú)二的項(xiàng)目;你不能同
時(shí)有一個(gè)擁有同樣的 groupId , artifactId 和 version 標(biāo)識(shí)的項(xiàng)目。
packaging
項(xiàng)目的類型,默認(rèn)是 jar ,描述了項(xiàng)目打包后的輸出。類型為 jar 的項(xiàng)目產(chǎn)生一個(gè)
JAR 文件,類型為 war 的項(xiàng)目產(chǎn)生一個(gè) web 應(yīng)用。
Maven 也提供了不同的依賴范圍 (dependency scope) 。 Simple 項(xiàng)目的 pom.xml 包含了
一個(gè)依賴—— junit:junit:jar:3.8.1 —— 范圍是 test 。當(dāng)一個(gè)依賴的范圍是 test 的
時(shí)候,說(shuō)明它在 Compiler 插件運(yùn)行 compile 目標(biāo)的時(shí)候是不可用的。它只有在運(yùn)
行 compiler:testCompile 和 surefire:test 目標(biāo)的時(shí)候才會(huì)被加入到 classpath 中。
當(dāng)用 Maven 來(lái)創(chuàng)建 WAR 或者 EAR ,你可以配置 Maven 讓它在生成的構(gòu)件中捆綁依賴,
你也可以配置 Maven ,使用 provided 范圍,讓它排除 WAR 文件中特定的依賴。 provided 范
圍告訴 Maven 一個(gè)依賴在編譯的時(shí)候需要,但是它不應(yīng)該被捆綁在構(gòu)建的輸出中。當(dāng)你
開發(fā) web 應(yīng)用的時(shí)候 provided 范圍變得十分有用,你需要通過 Servlet API 來(lái)編譯你的代
碼,但是你不希望 Servlet API 的 JAR 文件包含在你 web 應(yīng)用的 WEB-INF/lib 目錄中。
?
?
Maven 運(yùn)行命令 :
mvn archetype:create -DgroupId=org.victor.mvn \
-DartifactId=simple-webapp -DpackageName=org.victor.mvn -DarchetypeArtifactId=maven
?
mvn exec:java -Dexec.mainClass=org.sonatype.mavenbook.MyApp
?
mvn compile
?
mvn test
mvn install (mvn clean install)
mvn package
?
mvn assembly:assembly
?
?
?
?
?
?
忽略測(cè)試失敗
通常,你會(huì)開發(fā)一個(gè)帶有很多失敗單元測(cè)試的系統(tǒng)。 如果你正在實(shí)踐測(cè)試驅(qū)動(dòng)開發(fā)
(TDD) ,你可能會(huì)使用測(cè)試失敗來(lái)衡量你離項(xiàng)目完成有多遠(yuǎn)。 如果你有失敗的單元
測(cè)試,但你仍然希望產(chǎn)生構(gòu)建輸出,你就必須告訴 Maven 讓它忽略測(cè)試失敗。 當(dāng)
Maven 遇到一個(gè)測(cè)試失敗,它默認(rèn)的行為是停止當(dāng)前的構(gòu)建。 如果你希望繼續(xù)構(gòu)
建項(xiàng)目,即使 Surefire 插件遇到了失敗的單元測(cè)試,你就需要設(shè)置 Surefire 的
testFailureIgnore 這個(gè)配置屬性為 true 。
< project >
[...]
< build >
< plugins >
< plugin >
< groupId >org.apache.maven.plugins< /groupId >
< artifactId >maven-surefire-plugin< /artifactId >
< configuration >
< testFailureIgnore >true< /testFailureIgnore >
< /configuration >
< /plugin >
< /plugins >
< /build >
[...]
< /project >
?
?
跳過單元測(cè)試
< project >
[...]
< build >
< plugins >
< plugin >
< groupId >org.apache.maven.plugins< /groupId >
< artifactId >maven-surefire-plugin< /artifactId >
< configuration >
< skip >true< /skip >
< /configuration >
< /plugin >
< /plugins >
< /build >
[...]
< /project >
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
