天天看点

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

继续阅读