史上最詳細Maven筆記以及搭建Nexus私服

1、配置環境變量

1.1、方式一

M2_HOME

在這裏插入圖片描述

1.2、方式二

在這裏插入圖片描述

1.3、 查看是否配置成功

mvn -version

在這裏插入圖片描述

2、配置maven遠程倉庫地址

2.1、本地maven加載順序

在這裏插入圖片描述
查找遠程地址:maven\lib\maven-model-builder-3.3.9.jar
在這裏插入圖片描述

打開pom文件:

在這裏插入圖片描述

這個地址就是遠程倉庫地址:

https://repo.maven.apache.org/maven2

在這裏插入圖片描述

2.2、配置國內遠程倉庫

<mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
</mirror>

在這裏插入圖片描述

3、pom文件

3.1、scope的值

test:作用域在測試環境
compile (默認)編譯和運行都生效
provide 編譯生效  打包不生效
runtime 編譯不生效  打包生效

在這裏插入圖片描述

3.2、組成的基本元素:

元素 可選值 描述
groupId 分組ID
artifactId 模塊id
version 版本
packaging jar、pom、war 打包類型
modelVersion 對應的超級pom 版本
dependencies 項目依懶包

3.3、基本命令

mvn clean // 清理target目錄

mvn compile // 編譯

mvn test // 測試

mvn package // 打包

mvn install // 打包並上傳到本地倉庫

mvn depeloy // 上傳到遠程倉庫

mvn -Dmaven.test.skip=true // 跳過測試

4、聚合

4.1、介紹

常說的父工程就是聚合工程,它將多個子工程聚合起來,這樣的話,直接使用maven編譯打包父工程即可;

<modules>
        <module>maltose-registry</module>
        <module>maltose-api-gateway</module>
        <module>maltose-item</module>
        <module>maltose-common</module>
</modules>

其中,每一個model是子工程的artifactId值;

4.2、依賴傳遞

controller依賴service,service依賴dao;

如果service與dao的pom文件裏都有同一個jar包—log4j.jar,但是版本不一致,那麼maven是如何處理這種情況?

service的pom裏,誰在前邊寫的,那麼就是用的是誰;即:pom文件裏有相同依賴,不同版本時,誰寫在前,就依賴的是誰

在這裏插入圖片描述

5、linux7.13下搭建nexus3.18私服

5.1、nexus搭建

上傳nexus包,並解壓(nexus下載

tar -zxvf nexus-3.18.1-01-unix.tar.gz

各個版本下載地址:
https://help.sonatype.com/repomanager3/download

https://help.sonatype.com/repomanager3/download/download-archives—repository-manager-3

解壓後生成下邊兩個文件夾:
在這裏插入圖片描述
倉庫裏目前是空的,當有jar包上傳上來後,就有jar包了;

配置環境變量,設置使用哪個用戶啓動Nexus

vi  /etc/profile
#添加如下配置項,後邊的值是用戶名,一般不要設置root用戶
export  RUN_AS_USER=root

使配置文件生效:source /etc/profile

啓動nexus:
進入到剛解壓後的安裝源文件下的bin目錄,執行如下命令啓動nexus

# 不顯示日誌的啓動
./nexus start
# 如下命令也可以啓動——顯示日誌
./nexus run &

在這裏插入圖片描述
瀏覽器訪問(默認端口是8081)

http://192.168.11.129:8081/

在這裏插入圖片描述
登錄:
點擊右上角的Sign in,默認用戶名admin,默認密碼在sonatype-work/nexus3/admin.password裏,當前最新版本nexus3.18默認密碼不是admin123了,如下圖

在這裏插入圖片描述
登錄:
在這裏插入圖片描述
第一次登錄要求改密碼:
在這裏插入圖片描述
輸入新密碼後點擊NEXT
在這裏插入圖片描述
在這裏插入圖片描述
點擊finish,修改密碼完成:
在這裏插入圖片描述
修改默認端口:
在這裏插入圖片描述

手動更新索引:
1、前往maven中央倉庫下載indexer-cli-5.1.1.jar;
下載地址:

http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.apache.maven.indexer%22%20AND%20a%3A%22indexer-cli%22

2、下載索引文件:
http://repo.maven.apache.org/maven2/.index/
下載如下兩個文件:

nexus-maven-repository-index.gz

nexus-maven-repository-index.properties

在這裏插入圖片描述

5.2、倉庫類型

有三大類型:proxy、group、hosted
在這裏插入圖片描述
各個倉庫的介紹:

  • Group:分組倉庫
  • Hosted:私有倉庫,專門用於存儲我們自己內部生成的jar文件
    • 3rd party:第三方倉庫
    • Snapshots:本地項目的快照倉庫
    • Releases:本地項目發佈的正式版本
  • Proxy:公網發佈的jar 例如:spring\mysql driver\struts等
    • Central:中央倉庫
    • Apache Snapshots:Apache 快照倉庫

5.3、本地項目配置私服,進行下載jar包

在setting.xml裏添加如下配置:

<mirrors>
    <mirror>
      <id>nexusSnapshot</id>
      <name>nexus</name>
      <url>http://192.168.237.128:8081/repository/maven-public/</url>
      <mirrorOf>*</mirrorOf>        
    </mirror>

以及:

<profile>
      <id>common</id>

     
      <repositories>
        <repository>
          <id>nexusSnapshot</id>
          <name>snapshots</name>
          <url>http://*</url>
        </repository>
		
		 <repository>
          <id>nexusCentral</id>
          <name>nexusCentral/</name>
          <url>http://*</url>
        </repository>
		
		 <repository>
          <id>nexusReleases</id>
          <name>nexusReleases</name>
          <url>http://*</url>
        </repository>
      </repositories>
    </profile>

如下圖:
在這裏插入圖片描述
其中mirrorOf的值是*,表明只能從私服下載,如果私服關閉還允許從中央倉庫下載,則*改爲對應的站點即可,如改爲nexusSnapshot;
如改爲如下配置:
在這裏插入圖片描述
在這裏插入圖片描述

其中,url地址複製即可:
在這裏插入圖片描述

5.4、上傳jar包到私服

1、在pom.xml裏添加如下配置

<distributionManagement>
        <repository>
            <name>nexusSnapshot</name>
            <id>nexusSnapshot</id>
            <url>http://192.168.237.128:8081/repository/maven-snapshots/</url>
        </repository>
</distributionManagement>

在這裏插入圖片描述
2、在setting.xml裏配置用戶名密碼

<server>
      <id>nexusSnapshot</id>
      <username>admin123</username>
      <password>admin123</password>
</server>

在這裏插入圖片描述
3、然後執行deploy命令即可上傳
在這裏插入圖片描述
在nexus後臺搜索相關jar:
在這裏插入圖片描述

5.5、maven插件的使用

5.5.1、將源碼打爲jar包的插件

訪問:http://maven.apache.org/,點擊左側插件鏈接
在這裏插入圖片描述
ctrl+F搜索source插件,點擊進去
在這裏插入圖片描述
裏邊會介紹該插件的用法:
在這裏插入圖片描述
點擊上邊的usage page:
在這裏插入圖片描述
項目裏使用該插件,pom.xml:
在這裏插入圖片描述

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.1.0</version>
                <!--要執行的指令-->
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <!--生命週期,即什麼時候-->
                        <phase>verify</phase>
                        <!--具體執行的目標,即幹什麼事情-->
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                        <!--需要的配置-->
                       <!-- <configuration></configuration>-->
                    </execution>
                </executions>
            </plugin>
        </plugins>
 </build>

然後執行install命令或package命令,即可打出源碼包:
在這裏插入圖片描述

5.5.2、設置JRE編譯版本的插件

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <configuration>
         <source>1.7</source>
         <target>1.7</target>
   </configuration>
</plugin>

在這裏插入圖片描述

5.5.3、將項目裏的jar包全部打包爲rar文件

1、點擊maven插件在這裏插入圖片描述
2、找到RAR插件
在這裏插入圖片描述
3、
在這裏插入圖片描述
4、將下邊的插件複製到pom.xml裏
在這裏插入圖片描述
注意:上邊提示需要執行mvn rar:rar命令,才能最終打出rar包
5、pom.xml:
在這裏插入圖片描述
6、執行mvn rar:rar命令打包
在這裏插入圖片描述
將這個rar文件複製出來,可以看到裏邊的文件都是jar文件
在這裏插入圖片描述
上邊的配置方式。需要執行mvn rar:rar命令才能打爲rar包,插件配置成下邊的形式,直接執行install命令就可打爲rar包:

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-rar-plugin</artifactId>
     <version>2.4</version>
     <configuration>
         <includeJar>false</includeJar>
     </configuration>
     <executions>
          <execution>
              <id>buildRar</id>
              <phase>verify</phase>
              <goals>
                  <goal>rar</goal>
              </goals>
          </execution>
     </executions>
</plugin>

在這裏插入圖片描述

5.6、maven生命週期

生命週期 lifecycle
clean lifecycle : 構建前的清理工作
• pre-clean 執行一些需要在clean之前完成的工作
• clean 移除所有上一次構建生成的文件
• post-clean 執行一些需要在clean之後立刻完成的工作

Default lifecycle: 構建的核心部分,編譯、打包、部署、上傳
validate 項目及所必須的環境驗證
• initialize 初始化構建狀態,例如設置屬性或創建目錄。
• generate-sources 生成次源包
• process-sources
• generate-resources
• process-resources 複製並處理資源文件,至目標目錄,準備打包。
compile 編譯項目的源代碼。
• process-classes
• generate-test-sources
• process-test-sources
• generate-test-resources
• process-test-resources 複製並處理資源文件,至目標測試目錄。
• test-compile 編譯測試源代碼。
• process-test-classes
test 使用合適的單元測試框架運行測試。這些測試代碼不會被打包或部署。
• prepare-package
package 接受編譯好的代碼,打包成可發佈的格式,如 JAR 。
• pre-integration-test
• integration-test
• post-integration-test
verify
install 將包安裝至本地倉庫,以讓其它項目依賴。
deploy 將最終的包複製到遠程的倉庫,以讓其它開發人員與項目共享。

執行下邊的命令時,上邊的就會自動執行,如執行install時,compile 就會自動執行(install以上的所有命令都會執行)

site lifecycle:項目報告生成,站點文檔生成
• pre-site 執行一些需要在生成站點文檔之前完成的工作
• site 生成項目的站點文檔
• post-site 執行一些需要在生成站點文檔之後完成的工作,並且爲部署做準備
• site-deploy 將生成的站點文檔部署到特定的服務器上

生命週期官網:http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章