maven-3.6.1:問題解決與使用技巧

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

說明:使用的是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一直失敗

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

2.一般解決辦法

(1) 瀏覽遠程倉庫:mvnrepository、aliyun等遠程倉庫中心

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

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

3.另一種方法

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

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

  

(2)手動下載jar文件

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

(3)更改jar文件名

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

(4)清空ojdbc14/10.2.0.3.0這個文件夾的其他文件。

(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執行該操作則失敗

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

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

 

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