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这个文件夹的其他文件

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

(5)重新maven install即可

三、将本地jar包打入到本地maven仓库中

整体步骤

1、去远程仓库里下载jar包文件,并记住groupId、artifactId、version信息

2、配置MAVEN_HOME环境变量

这一步并非必须,它是为了等下下面的命令能够简单一点,本质上是在任何目录可以执行mvn命令

3、通过cmd进入到该jar文件所在位置执行下面脚本(最好别用powershell)

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

说明:这和上一个问题本质上是相同的,都是将我们手中已有的jar包,给与它一个本地仓库maven坐标。坐标是仅仅用于标识一个jar包文件的唯一性而已,maven能够根据坐标去找到唯一的一个jar包文件,它并不关系这个jar包本身是什么内容,你什么可以将一个任意文件命名为x.jar文件,然后打入到本地maven仓库中,内容只是决定着编译、运行时是否可用。

maven项目根据坐标,先去本地仓库中找,如果没找到时若设置了私服,则去私服仓库中找;若未设置私服,则去配置的远程仓库中找(默认远程仓库是repo1什么的)

注意:建议为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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值