5. maven pom檔案中常用的標籤
maven pom檔案中常用的標籤
通過pom檔案可以對maven進行設定,其中有一些常用的標籤我們來一起看一下:
packaging 【這個要懂啊】
下面的groupId,artifactId,version之前有說過了,這裡就不再解釋了,其中有個packaging標籤,該標籤的作用是指定maven打包的方式,有三個選項:
-
pom
該方式主要是管理maven專案的,裡面不放原始碼,用於繼承或聚合的maven模組中
-
war
會將專案打成war包,對於web專案來說,通常會設定為war
-
jar
打成jar包,對於普通java專案來說,通常會設定為jar
<groupId
dependency 【裝Maven 那個連結的】
我們要使用的jar包的gav資訊放到這裡,這樣maven就可以自動下載相關jar包了。
scope 【dependency 除了 裝 gav 之外 還裝這個 scope 引數如下:】
在dependency標籤下有一個scope標籤,該標籤的作用是可以設定依賴在專案的使用階段,通常來說,專案包含:編譯、執行、測試、打包這些不同的階段。
-
compile
是預設值,適用於所有階段,編譯、執行、測試、打包都會包含到專案中。
-
test
只在測試時使用,用於編譯和執行測試程式碼,不會隨專案釋出, 例如junit,如果不修改junit依賴中的scope,我們只能在test目錄下使用junit相關類。
-
runtime
只在執行時使用,例如mysql的JDBC驅動依賴,我們在編寫程式碼的時候使用java.sql包下的類即可,在執行的時候才會用到該依賴,適用執行和測試階段。
-
provided
編譯、執行階段使用,打包時不會包含該依賴,例如servlet.jar,這個包在tomcat容器中已經提供了,因此打包時servlet.jar 無需包含在專案中。
-
system
類似provided,需要顯式提供包含依賴的jar的路徑(使用systemPath標籤),Maven不會在倉庫中查詢它。使用較少
systemPath 【注意 它也是放在dependency 裡, 一般都不會這樣幹 可以下載何樂而不為呢?】
引入非本地倉庫中的jar包,有時候我們需要使用一些jar包,但是這些jar在maven倉庫中並不存在,此時可以使使用下面方式引用,以log4j為例:
<dependency> <groupId>org.apache</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/log4j-1.2.17.jar</systemPath> </dependency>
但是 要加配置:如果這樣引入非本地參考的jar包時,在使用maven打包時是不會將該jar打包入專案中的【Maven打包不會將這個非本地倉庫的jar包打進去】,所以還需要新增下面內容:
<build> <resources> <resource> <directory>${project.basedir}/lib</directory> <targetPath>BOOT-INF/lib/</targetPath> <includes> <include>**/*.jar</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <targetPath>BOOT-INF/classes/</targetPath> </resource> </resources> </build>
裡面的一些東西 我也看不多懂 因為我暫且還沒用過呢.... 所以 你baidu即可
properties 【我也不懂 後面懂了回來補】
有時候對於同一個技術需要編寫很多個依賴引入相關的jar包,每個依賴中都要填寫版本號,倘若更換版本號的話,修改的地方比較多,所以可以使用properties統一管理版本號,logback-version可以自由命名,通過${}方式進行引用:
<properties> <logback-version>1.2.3</logback-version> </properties> <dependencies> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>${logback-version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback-version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-access</artifactId> <version>${logback-version}</version> </dependency>
1.內建屬性
${basedir}表示專案根目錄,即包含pom.xml檔案的目錄
${version}等同於 ${project.version}或者 ${pom.version}表示專案版本