Maven 配置詳解整理,Maven項目運行報錯

目錄

本文翻譯於如下文章

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




POM文件配置

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 : 可選,排除傳遞依賴性,默認空



scope的幾個範圍

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:指定去掉後綴的工程名字,例如:默認爲 a r t i f a c t I d {version}

filters:用於定義指定filter屬性的位置,例如filter元素賦值filters/filter1.properties,那麼這個文件裏面就能夠定義name=value對,這個name=value對的值就能夠在工程pom中經過 n a m e f i l t e r {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>
相關文章
相關標籤/搜索