飞道的博客

Maven的使用

487人阅读  评论(0)


 

maven是一个跨平台的依赖管理工具,可统一管理依赖、自动构建项目。
 

配置阿里云镜像

https://help.aliyun.com/document_detail/102512.html

聚合仓库里的依赖多,一般使用聚合仓库(group)。
可点击右上角的使用指南,把maven的配置粘到maven配置文件中即可,给的配置默认就是聚合仓库的。

 

IDEA中使用Maven

可以使用IDEA自带的maven,也可以使用自己下载的。

需要在IDEA没有打开项目的情况下配置,如果打开了项目,则maven配置只对该项目生效。
 
1、配置路径

2、配置参数
默认直接到远程仓库下载依赖,配置为:先在本地仓库中找,有就直接使用,没有才去远程仓库下载

-DarchetypeCatalog=internal

 

Maven中的相关概念

<dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.11</version>
     <scope>test</scope>
 </dependency>
  • groupId 公司、组织的名称
  • artifactId 项目名称
  • version 项目版本号。SNAPSHOT 快照,开发中的版本,不稳定;Release,发布版本。

以上3部分组成依赖的坐标,唯一标识一个依赖。scope是依赖的作用时期

  • test 只作用于测试时
  • runtime 只作用于运行时
  • provided 只作用于编译时
  • compile 默认值,可缺省,编译、测试、运行时都有效

 

Maven常用命令


mvn -v或version  #查看maven版本

mvn clean  #清理,删除target文件夹(之前编译、打包产生的文件)

mvn compile  #编译

mvn test  #测试

mvn package  #打包为jar或war(取决于pom.xml中的打包配置)

mvn install  #安装,把jar包放到本地仓库中

mvn deploy  #部署

 

Maven项目目录

  • .idea  IDEA对项目的一些配置,留着
  • .mvn  打包用的,基本用不到,删掉
  • src  main放源码,test放测试代码。java下放java代码,resources下放资源文件。
  • .gitignore  指定上传到git仓库时哪些类型的文件被忽略、不上传
  • HLEP.md  说明、帮助,没啥用,删掉
  • .iml  IDEA的一些配置,留着
  • mvnw、mvnw.cmd  这2个是IDEA自带的maven命令,可以删掉
  • pom.xml

总结:将.mvn、HLEP.md、mvnw、mvnw.cmd删掉,只保留.idea、src、.gitignore、.iml、pom.xml,看起来清爽一些

 

多模块开发

经常要把一个项目拆分为多个模块进行开发,比如微服务。2种方式

  • 新建空项目,里面新建子模块
  • 父子工程(聚合工程)推荐。 新建maven项目,删除不需要的东西,里面新建子模块。子模块会继承父项目的依赖,可以用父项目的pom.xml统一子项目的依赖版本。注意:并不是所有依赖都会继承,子模块不继承scope是provided、test的依赖。

 

常见问题

jar包冲突

jar包冲突:重复引入某个依赖(相同版本或不同版本),maven不知道使用哪个。

在pom.xml中引入一个依赖,maven会自动导入这个依赖的依赖,方便的同时也容易造成jar包冲突。

直接导入的依赖叫做直接依赖,间接导入的依赖叫做间接依赖,比如我们导入A,A依赖B,maven自动导入B,A是直接依赖,B是间接依赖。
 

解决jar包冲突:

如果不知道是哪些jar包冲突了,先看依赖关系图,找到冲突的jar包。

  • 如果冲突的包都是直接依赖、或者都是间接依赖,把要用的那个放前面,先声明的优先级高;或者把要用的写成直接依赖,直接依赖优先级比间接依赖高
  • 可以用<exclusion>排除不要的间接依赖,一个<exclusion>排除一个间接依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    
    <exclusions>
    
        <exclusion>
            <groupId></groupId>
            <artifactId></artifactId>
        </exclusion>
        
    </exclusions>
    
</dependency>

 

版本号显示为红色


原因是jar包版本太高,远程仓库中还没有,改低一点即可

 

配置了阿里镜像后仍从中央仓库下载依赖

这个问题常见于拉取别人的项目,在pom.xml中手动添加maven仓库配置即可

<repositories>
    <repository>
        <id>nexus-aliyun</id>
        <name>nexus-aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

如果还是不行,新建了一个maven项目,看是否从阿里的镜像仓库下载依赖、是否连接到阿里的仓库。

 

Maven项目默认使用JDK1.5

2种解决方式

方式一、在pom.xml设置源码、编译使用的jdk版本

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

也可以在插件中设置

<build>
    <plugins>
    
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
        </configuration>
        </plugin>
        
    </plugins>
</build>

 
方式二、修改IDEA的配置

修改源码版本,Sources 、Dependencies中的jdk版本都看一下
修改编译使用的jdk版本(目标版本)

 

说明

IDEA 2020.1版取消了maven的自动导入,修改pom.xml后,需要手动Reimport。


转载:https://blog.csdn.net/chy_18883701161/article/details/106277245
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场