pom文件詳解 - 機器有毒 - 博客園
http://www.javashuo.com/article/p-kcrxrkso-cq.htmlhtml
Maven中pom文件詳解 - CSDN博客
https://blog.csdn.net/tanga842428/article/details/54574590
java
SVN更新項目,啓動時報錯,推薦這邊文章 Maven項目啓動加載找不到maven的java web項目啓動找不到Spring
ContextLoaderListener的解決辦法 - CSDN博客web
https://blog.csdn.net/qq_16485855/article/details/70208204api
dependencies: 項目依賴
plugins: 插件配置tomcat
名詞解釋
Project: 全部元素的根元素,該元素聲明的信息主要爲了方便第三方插件使用。jsp
modelVersion: 用於指定當前POM模型的版本,對於maven2,maven3只能是4.0.0。maven
groupId: 必選,實際隸屬項目 – 用於指定當前項目所屬的組ide
artifactId: 必選,其中的模塊 –當前項目所屬組的惟一的ID號單元測試
version: 必選,版本號測試
type: 可選 ,依賴類型,默認jar,還有一個比較特殊的,好像是以axi開頭的,用的是mar
scope: 可選,依賴範圍,默認compile還有test,provided,runtime,system
optional: 可選,標記依賴是否可選,默認false
exclusion : 可選,排除傳遞依賴性,默認空
compile:編譯,測試,運行
test:測試
provided :編譯,測試
runtime:運行
system:system:編譯,測試,同provided,但必須指定systemPath,網上都說-慎用。。。
scope範圍的測試
1.compile
編譯範圍,默認scope,在工程環境的classpath(編譯環境)和打包(若是是WAR包,會包含在WAR包中)時候都有效。
2.provided
容器或JDK已提供範圍,表示該依賴包已經由目標容器(如tomcat)和JDK提供,只在編譯的classpath中加載和使用,打包的時候不會包含在目標包中。最多見的是j2ee規範相關的servlet-api和jsp-api等jar包,通常由servlet容器提供,無需在打包到war包中,若是不配置爲provided,把這些包打包到工程war包中,在tomcat6以上版本會出現衝突沒法正常運行程序(版本不符的狀況)。
3.runtime
通常是運行和測試環境使用,編譯時候不用加入classpath,打包時候會打包到目標包中。通常是經過動態加載或接口反射加載的狀況比較多。也就是說程序只使用了接口,具體的時候可能有多個,運行時經過配置文件或jar包掃描動態加載的狀況。典型的包括:JDBC驅動等。
4.test
測試範圍,通常是單元測試場景使用,在編譯環境加入classpath,但打包時不會加入,如junit等。
5.system(還未測試,通常用不到)
系統範圍,與provided相似,只是標記爲該scope的依賴包須要明確指定基於文件系統的jar包路徑。由於須要經過systemPath指定本地jar文件路徑,因此該scope是不推薦的。若是是基於組織的,通常會創建本地鏡像,會把本地的或組織的基礎組件加入本地鏡像管理,避過使用該scope的狀況。
build設置
defaultGoal:默認的目標,必須跟命令行上的參數相同,如:jar:jar,或者與時期parse相同,例如install
directory:指定build target目標的目錄,默認爲$(basedir}/target,即項目根目錄下的target
finalName:指定去掉後綴的工程名字,例如:默認爲 {version}
filters:用於定義指定filter屬性的位置,例如filter元素賦值filters/filter1.properties,那麼這個文件裏面就能夠定義name=value對,這個name=value對的值就能夠在工程pom中經過 {basedir}/src/main/fiters/
resources:描述工程中資源的位置
<dependency>
<groupId>建立的groupid</groupId>
<artifactId>默認的id</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
//例子:com.tkp.base
<dependency>
<groupId>com.tkp</groupId>
<artifactId>base</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>