天天看點

maven-3.6.1:問題解決與使用技巧一、配置本地倉庫、遠端倉庫二、jar包無法下載下傳到本地倉庫三、将本地jar包打入到本地maven倉庫中四、多子產品工程打包失敗

以下内容純屬個人扯淡,僅供參考

說明:使用的是IDEA2019.3版本内嵌的插件,version=3.6.1,是以不需要專門下載下傳一個maven軟體到本地中。使用内嵌版有些不好的地方:隻能是IDEA本身使用,eclipse每個版本也有自帶的内嵌版maven,是以不同的開發工具,或同一開發工具但不同版本之間的内嵌maven版本就不一緻,在這種情況下,最好為不同的開發工具設定不同的.setting.xml配置檔案和本地倉庫

目錄

一、配置本地倉庫、遠端倉庫

二、jar包無法下載下傳到本地倉庫

三、将本地jar包打入到本地maven倉庫中

一、配置本地倉庫、遠端倉庫

配置檔案

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  
  <localRepository>D:/maven/idea_repository/Repository</localRepository>

  <pluginGroups></pluginGroups>

  <proxies></proxies>

  <servers></servers>

  <mirrors>
    <!--
    <mirror>
        <id>springio</id>
        <mirrorOf>central</mirrorOf>
        <name>Human Readable Name for this Mirror.</name>
        <url>http://repo1.maven.org/maven2</url>
    </mirror>

    <mirror>
        <id>nexus-osc</id>
        <mirrorOf>*</mirrorOf>
	<name>Nexus osc</name>
	<url>http://maven.oschina.net/content/groups/public/</url>
    </mirror>
    -->
    <mirror>
	<id>alimaven</id>
	<name>aliyun maven</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	<mirrorOf>central</mirrorOf>        
    </mirror>
  </mirrors>

 
  <profiles>
      <profile>
	    <id>jdk-1.8</id>
            <activation>
	        <activeByDefault>true</activeByDefault>
	        <jdk>1.8</jdk>
	    </activation>
            <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
            </properties>
      </profile>
  </profiles>

</settings>
           

該配置檔案名為.settings.xml,其中<localRepository>中的路徑就是本地倉庫位置,<mirror>就是遠端倉庫位置

另外建議将該配置檔案放置在D:/maven/idea_repository目錄下,與本地倉庫Repository目錄同級,這樣表示該倉庫與其配置檔案在一個目錄下,友善查找;并且,可以再建一個D:/maven/eclipse_repository目錄,存放另一個配置檔案.settings.xml和倉庫Repository,這樣就在本地分别配置了兩個本地倉庫分别供IDEA、eclipse工具使用

二、jar包無法下載下傳到本地倉庫

1.問題描述

項目中需要使用

<dependency>    
    <groupId>com.oracle</groupId>    
    <artifactId>ojdbc14</artifactId>    
    <version>10.2.0.3.0</version
</dependency>
           
但是maven install一直失敗
           
maven-3.6.1:問題解決與使用技巧一、配置本地倉庫、遠端倉庫二、jar包無法下載下傳到本地倉庫三、将本地jar包打入到本地maven倉庫中四、多子產品工程打包失敗

該jar包無法在遠端倉庫中找到

2.一般解決辦法

(1) 浏覽遠端倉庫:mvnrepository、aliyun等遠端倉庫中心

(2) 搜尋你需要的jar包及版本

    缺點:恰好你需要的jar包版本在遠端倉庫中有。多重試幾次install即可

3.另一種方法

(1)出現該問題後,你可以打開本地倉庫該jar包所在目錄,那麼目錄的内容會是這樣的:此時,jar封包件沒有下載下傳到本地

maven-3.6.1:問題解決與使用技巧一、配置本地倉庫、遠端倉庫二、jar包無法下載下傳到本地倉庫三、将本地jar包打入到本地maven倉庫中四、多子產品工程打包失敗

     但是,正常的應該是這樣:

maven-3.6.1:問題解決與使用技巧一、配置本地倉庫、遠端倉庫二、jar包無法下載下傳到本地倉庫三、将本地jar包打入到本地maven倉庫中四、多子產品工程打包失敗

(2)手動下載下傳jar檔案

    可以通過各種方式:百度、倉庫服務、百度雲等等,隻要能拿到jar檔案

(3)更改jar檔案名

    手動下載下傳到的jar檔案名可能是各種各樣的,我們應該更改為按照生成的那些檔案的"樣子"

maven-3.6.1:問題解決與使用技巧一、配置本地倉庫、遠端倉庫二、jar包無法下載下傳到本地倉庫三、将本地jar包打入到本地maven倉庫中四、多子產品工程打包失敗

(4)清空ojdbc14/10.2.0.3.0這個檔案夾的其他檔案

注意:不清空直接maven install試試

maven-3.6.1:問題解決與使用技巧一、配置本地倉庫、遠端倉庫二、jar包無法下載下傳到本地倉庫三、将本地jar包打入到本地maven倉庫中四、多子產品工程打包失敗

(5)重新maven install即可

三、将本地jar包打入到本地maven倉庫中

說明:這和上一個問題本質上是相同的,都是将我們手中已有的jar包,給與它一個本地倉庫maven坐标。坐标是僅僅用于辨別一個jar封包件的唯一性而已,maven能夠根據坐标去找到唯一的一個jar封包件,它并不關系這個jar包本身是什麼内容,你什麼可以将一個任意檔案命名為x.jar檔案,然後打入到本地maven倉庫中,内容隻是決定着編譯、運作時是否可用。

maven項目根據坐标,先去本地倉庫中找,如果沒找到時若設定了私服,則去私服倉庫中找;若未設定私服,則去配置的遠端倉庫中找(預設遠端倉庫是repo1什麼的)

準備好jar封包件,在其所在目錄中執行以下指令

mvn install:install-file -Dfile=ojdbc8.jar -DgroupId=com.github.noraui -DartifactId=ojdbc8 -Dversion=12.2.0.1 -Dpackaging=jar
           

注意:建議為maven配置環境變量MAVEN_HOME,這樣就可以在任意目錄執行mvn指令被識别了,否則就隻能在該指令所在目錄下運作;-Dfile值為相對路徑表示目前路徑下的該檔案名,它的目的是為了找到這個jar檔案,不要使用wi10的PowerShell執行該指令,而是使用cmd(将jar包放在桌面上,打開cmd後預設是進入到使用者目錄,是以cd Desktop就進入到桌面了)

對應maven坐标

<dependency>
    <groupId>com.github.noraui</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>12.2.0.1</version>
</dependency>
           

四、多子產品工程打包失敗

現象:A依賴B,B依賴C,但C單獨maven clean install成功後,對B執行該操作則失敗

maven-3.6.1:問題解決與使用技巧一、配置本地倉庫、遠端倉庫二、jar包無法下載下傳到本地倉庫三、将本地jar包打入到本地maven倉庫中四、多子產品工程打包失敗

報錯意思是說B的pom.xml的C這個依賴無法被找到,但實際上C是已打包成功的

解決辦法:打包多子產品項目時,應首先對父工程Maven install

繼續閱讀