生成一個web的maven項目:web
mvn archetype:create -DgroupId=com -DartifactId=simple-web -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeCatalog=local緩存
-DarchetypeCatalog表示使用本地緩存的catalog,不用每次生成的時候都去查詢。網絡
上面能夠出現the defined artifact is not an archetype的錯誤,這個錯誤能夠經過一、刪除本地庫,二、刪除其它的mirror,只使用maven的庫。從新生成便可。app
使用對應的profile來構建:webapp
mvn install -PprofileNamemaven
調試測試用例:測試
mvn -Dmaven.surefire.debug test
RESTService,webservice jax-rs的實現,裏面包含了deploy方法。spa
surefire plugin運行測試用例失敗時候打印Stack trace:debug
mvn test -Dsurefire.useFile=false
forkMode可讓第個Test使用不一樣的ClassLoader,這樣可使得一些依賴於系統屬性的常量值在不一樣的Test中獲得不一樣的設置調試
forkMode 可設置值有 「never」, 「once」, 「always」 和 「pertest」
-DinteractiveMode=false 非交互模式
surefire測試指定類
>mvn test -Dtest=[ClassName] 運行測試類中指定的方法:(這個須要maven-surefire-plugin:2.7.3以上版本才能支持) >mvn test -Dtest=[ClassName]#[MethodName] //[MethodName]爲要運行的方法名,支持*通配符,範例: >mvn test -Dtest=MyClassTest#test1 >mvn test -Dtest=MyClassTest#*test*
以離線模式運行,這樣子maven就不會去嘗試更新/檢查本地庫了,在私服沒有啓動等狀況下能夠節省網絡訪問上消耗的時間:
maven clean install --offline
簡單地用 dependency:tree每每並不能查看到全部的傳遞依賴。不過若是你真的想要看全部的,必須得加一個 -Dverbose參數,這時就一定是最全的了。
今天修改了一會兒module的依賴時候,構建項目的時出現dependencies.dependency.version for xxx is missing, transitive dependencies will be ignore。致使另外一下工程打包時候相關的依賴沒有打進來,(even though the dependency is already declared in its parent's pom file's dependency management section)即便parent pom已經含有相關<dependency>的version,但貌似沒有生效,後面在stackoverflow查找到了相關問題,發現parent pom沒有安裝到本地庫引發的。
2017-10-24: 今天在技術交流羣裏面看到一個maven解決依賴版本衝突的問題,特意複習了一下maven解決版本衝突的方式:
maven解決版本衝突主要是兩個原則。