Maven构建项目 — 知识点梳理

IDEA创建Maven项目,解决 Unable to import maven project: See logs for details 问题

项目构建的痛点
  • 1. 工程结构不统一 2. jar查找困难 3. 工程打包(jar/war)麻烦

IDE集成开发环境多种多样,不同IDE创建的项目的格式都是独立的。比如eclipse中创建的项目在idea中是无法被加载的。

项目需要的jar要到对应的官网上下载,这样不仅耗时,还容易出现jar冲突。



有痛点就会有需求,apache根据这些痛点开发了Maven项目管理工具。Maven有以下核心特性
  • 1. 项目结构遵循统一的规则,保证不同IDE开发环境的兼容性。eclipse中创建的项目再idea中也可以加载啦

  • 2. 强大的依赖管理功能,项目依赖组价自动下载、自动更新。我们直接到Maven中央仓库中下载,无需再从各自的官网上下载啦

  • 3. 可扩展的插件机制,Maven支持插件技术,比如springboot项目中,可以通过在Maven中引入spring-boot-maven-plugin插件来打包项目



Maven安装和配置
  • 1. Maven是用JAVA编写的,所以要运行Maven需要在本地安装jdk,并配置jdk的环境变量。如果已经安装好jdk的则可以跳过这一步。
    在这里插入图片描述在这里插入图片描述

  • 2. 进Maven官网http://maven.apache.org/download.cgi下载压缩包
    在这里插入图片描述

  • 3. 将Maven压缩包解压到指定目录
    在这里插入图片描述

  • 4. 配置Maven环境变量。在path变量中添加maven安装的bin目录路径D:\maven\apache-maven-3.6.3\bin
    在这里插入图片描述
    在这里插入图片描述

  • 5. 打开cmd命令行,输入mvn -v命令查看maven是否安装成功。
    在这里插入图片描述



修改Maven本地仓库
  • Maven默认的本地仓库在C:/Users/xx/.m2/repository,但C盘是系统盘,本地仓库不建议放在C盘。

编辑Maven配置文件settings.xml文件,在<settings>节点下添加<localRepository>来配置Maven本地仓库

<!-- Maven默认本地仓库是C:\Users\xx\.m2\repository,现在我们改为D:\maven\apache-maven-3.5.4\local-repository -->
<localRepository>D:\maven\apache-maven-3.5.4\local-repository</localRepository>



idea集成maven
  • 1. Maven是项目管理软件,一般是要和idea/eclipse这样的IDE集成环境联合使用。

  • 2. 在idea欢迎界面右下角的Configure中选择Settings,打开Settings设置界面。
    在这里插入图片描述

  • 3. 这里可以看到idea默认给我们集成了一款version为3.3.9的Maven,这就是为什么我们没有安装Maven的情况下也可以使用Maven来构建项目的原因。
    在这里插入图片描述

  • 4. 将idea默认集成的maven替换成我们自己安装的3.5.4版本的。(用idea默认的也是可以的,反正我就是用默认的)

    • maven相关选项配置
      • Maven home directory: 配置maven安装路径
      • User settings file: 指定maven配置文件路径。如果由个配置文件,我们可以指定使用哪个
      • Local repository:配置maven本地仓库路径。从远程仓库下载的依赖都会保存在这里。

    在这里插入图片描述



Maven坐标
  • GroupId:机构或团体的英文,采用逆向域名的方式书写

  • ArtifactId:项目名

  • Version:版本号,如1.0.0.RELEASE,RELEASE表示发布版的意思


Maven项目标准结构

目录 用途
${basedir} 项目根目录,pom文件就在该目录中
${basedir}/src/main/java 存储Java源代码(.java)的目录
${basedir}/src/main/resources 资源目录,存放配置文件、静态资源、页面文件等
${basedir}/src/test/java 测试类的源代码
${basedir}/src/test/resources 测试时使用的资源文件
${basedir}/target 项目输出目录,用于存储jar、war文件
${basedir}/target/classes 储存java源文件编译后的字节码(.class) 文件的目录
${basedir}/target/pom.xml 项目(Project)对象(Object)模型(Model)文件



Maven本地仓库 和 Maven中央仓库

本地仓库是指存储在本地磁盘中的文件; 远程中央仓库是指存储在apache服务器上的文件。

  • 1. 项目启动后,maven会加载pom.xml文件,分析里面有哪些dependency依赖。然后会去本地仓库(.m2/repository)中查找这些依赖(jar包)是否存在,如果不存在则会向maven中央仓库发起下载请求下载本地缺少的jar,然后maven再加载这些jar。
    在这里插入图片描述

  • 2. maven默认的私服地址在国外,在国内下载jar的速度会很慢;通过配置切换到国内的阿里云私服后,jar的下载速度就会变得非常快。
    在这里插入图片描述



建立阿里云maven私服

在一些大型项目中,会用到很多的依赖。如果我们的本地maven仓库中没有这些依赖,那么Maven就会去远程maven中央仓库中下载。但maven中央仓库是国外的网站,从那里下载会很慢。

下面通过配置阿里云Maven私服来提高速度(就是当本地maven仓库没有所需依赖时,会先从阿里云的maven仓库中下载,无需再到maven中央仓库中下载,使得maven下载jar的速度显著提高)

这里提供两种配置阿里云Maven私服的方式

  • 1. 在pom.xml文件中添加以下配置 (这种方式仅对当前项目有效)

    <repositories>
            <!--配置阿里云maven私服,提高maven下载jar的速度-->
            <repository>
                <id>aliyun</id>
                <name>aliyun-maven</name>
                <url>https://maven.aliyun.com/repository/public</url>
            </repository>
        </repositories>
    
  • 2. 编辑maven的settings.xml配置文件,在<mirror>节点下-添加阿里云maven私服 (这种方式是永久性的)

    <mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
    

    注意: 这是阿里云的maven私服的setting.xml文件,MirroOf配置不是*号,是central,这样在项目pom中配置repository依然生效



Unable to import maven project: See logs for details

在这里插入图片描述
将idea默认集成的Maven替换成自己安装的Maven后,创建Maven项目报错Unable to import maven project: See logs for details。百度 + Show Log in Explorer查看idea日志后,发现是选择apache-maven-3.6.3版本,导致不兼容,换低版本的Maven可行,建议使用3.6.1以下版本

进入https://archive.apache.org/dist/maven/maven-3/中下载3.6.1以下版本,然后修改环境变量、settings配置文件 和 idea的maven配置。然后再创建一个maven工程,发现问题解决。

在这里插入图片描述
在这里插入图片描述



解决idea的pom.xml代码不自动提示

打开Settings设置界面,Build,Execution,Deployment —> Build Tools —> Maven —> Repositories,选择第一项,然后Update即可。
在这里插入图片描述


https://search.maven.org/

https://maven.aliyun.com/

http://maven.apache.org/

猜你喜欢

转载自blog.csdn.net/weixin_42950079/article/details/105683494
今日推荐