maven私服

Liku007發表於2023-03-03

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,就可以了

相關文章