maven進階
分模組開發與設計
maven匯入maven-02,需要在pom.xml裡面匯入maven-02的依賴
<dependency>
<groupId>org.example</groupId>
<artifactId>maven_02</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
匯入之前maven-02需要install打包完成,這樣共有依賴
可選依賴
<dependency>
<groupId>org.example</groupId>
<artifactId>maven_02</artifactId>
<version>1.0-SNAPSHOT</version>
<!--選擇對外隱藏02引用的依賴-->
<optional>true</optional>
</dependency>
排除依賴
<exclusions>
<exclusion>
<!--排除依賴,排除02使用的這個依賴,不需要指定版本-->
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</exclusion>
</exclusions>
聚合
將多個模組組織成一個整體,同時踐行專案構建的過程成為聚合。
聚合工程:通常是一個不具有業務功能的空工程,有且僅有一個pom.xml,使用聚合工程可以將多個工程編組,透過對聚合工程進行構建,實現對所包含的模組進行同步構建【當工程中某個某塊發生更新時,必須保障工程中有關聯的其他模組同步更新】
建立一個空的maven模組,設定打包型別為pom,並新增管理module
<packaging>pom</packaging>
<modules>
<module>../../maven_02/maven_02</module>
<module>../../UserProj</module>
</modules>
繼承
子工程可以繼承父工程的配置資訊,子工程中新增
<parent>
<artifactId>maven_01_parent</artifactId>
<version>1.0-SNAPSHOT</version>
<groupId>org.example</groupId>
<relativePath>../maven_01_parent/pom.xml</relativePath>
</parent>
子工程就可以繼承父工程中的依賴
依賴管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
</dependencies>
</dependencyManagement>
子工程使用的時候不需要提供版本,從父類那邊取
屬性
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-version}</version>
</dependency>
</dependencies>
<properties>
<!--自定義spring版本的變數-->
<spring-version>5.3.7</spring-version>
</properties>
maven控制配置檔案內容
在properties標籤中新增變數:
<!--設定配置檔案的內容-->
<jdbc.url>jdbc:mysql://localhost:3306/4031</jdbc.url>
<jdbc.driver>com.mysql.jdbc.Driver</jdbc.driver>
resources下面的配置檔案jdbc.properties如下:
jdbc.driver=${jdbc.driver}
jdbc.url=${jdbc.url}
為了讓maven能夠鎖定目錄,在build裡面新增:
<resources>
<resource>
<!--開啟資原始檔目錄載入屬性的過濾器,設定內建屬性${project.basedir}表示當前工程同級所有工程目錄-->
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
配置類替代web.xml導致沒有web.xml的時候,編譯會報錯,在build新增配置
<plugin>
<!--找到war外掛的本地倉庫位置-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<!--忽略沒有web.xml配置檔案【當檔案中使用配置類替代web.xml的時候】-->
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
版本管理
工程版本:
snapshot:快照版本,開發中臨時輸出的版本
release:釋出版本,穩定的時候釋出
多環境開發
透過
<profiles>
<profile>
<!--在生產環境下的配置-->
<id>develop</id>
<properties>
<!--設定配置檔案的內容-->
<jdbc.url>jdbc:mysql://localhost:3306/4031</jdbc.url>
<jdbc.driver>com.mysql.jdbc.Driver</jdbc.driver>
</properties>
</profile>
<profile>
<!--在測試環境下的配置-->
<id>test</id>
<properties>
<jdbc.url>jdbc:mysql://localhost:3306/4031</jdbc.url>
<jdbc.driver>com.mysql.jdbc.Driver</jdbc.driver>
</properties>
</profile>
</profiles>
設定預設環境:
<profile>
<!--在生產環境下的配置-->
<id>develop</id>
<properties>
<!--設定配置檔案的內容-->
<jdbc.url>jdbc:mysql://localhost:3306/4031</jdbc.url>
<jdbc.driver>com.mysql.jdbc.Driver</jdbc.driver>
</properties>
<activation>
<!--設定是否為預設環境-->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
maven編譯的時候可以指定環境,在execute maven goal裡面輸入:
maven install -P develop
跳過測試
當功能更新中並沒有開發完畢的時候,希望打包maven,測試會報錯,透過下面的方式來跳過測試
點選skip test,然後再執行就不會報錯
透過下面方式可以跳過指定測試
<build>
<plugins>
<plugin>
<!--找到測試的外掛所在位-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<!--跳過測試-->
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
等價於上面的跳過測試,實際一般用這種方法,還可以排除一些要測試或者不需要測試的在configuration裡面新增:
<configuration>
<!--跳過測試-->
<skipTests>false</skipTests>
<excludes>
<!--排除在外-->
<exclude>../maven_02/src/main/java/org/example/Main.java</exclude>
</excludes>
</configuration>
用指令:
mvn package -D skipTests
私服
團隊內部的資源共享和資源同步,下載好的壓縮包latest
檔案一:nexus-3.30.1-01 輸入命令
nexus.exe /run nexus
檔案二:sonatype-work登入密碼儲存在該位置。
私服分類
1、宿主倉庫hosted
2、代理倉庫proxy
3、倉庫組group
資源上傳與下載
建立兩個倉庫:一個釋出,一個快照
配置conf下面的setting.xml
1、配置私服伺服器
<!-- 私服伺服器 -->
<server>
<id>liku_release</id>
<username>admin</username>
<password>123456</password>
</server>
<server>
<id>liku_snapshot</id>
<username>admin</username>
<password>123456</password>
</server>xml
2、配置私服訪問路徑,maven倉庫組
<!-- 私服的訪問路徑 -->
<mirror>
<id>maven-public</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
倉庫組的映象可以修改:
配置工程儲存到私服的管理位置:
<!--配置當前工程儲存在私服的具體位置-->
<distributionManagement>
<repository>
<id>liku_release</id>
<url>http://localhost:8081/repository/liku_release/</url>
</repository>
<snapshotRepository>
<id>liku_snapshot</id>
<url>http://localhost:8081/repository/liku_snapshot/</url>
</snapshotRepository>
</distributionManagement>
然後點選maven的外掛deploy,就可以了