当前位置:   article > 正文

Maven系统学习

Maven系统学习

Maven基础

Apache Maven 是一个软件项目管理和构建工具,可以帮助创建和管理项目

maven环境安装和配置

解压文件到sofeware下面去。

image.png

查看maven的版本
mvn --v
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00)
Maven home: D:\software\apache-maven-3.6.1\bin\..
Java version: 1.8.0_60, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_60\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

配置本地仓库

找到maven的配置文件,配置文件找到localRespitory

D:\software\apache-maven-3.6.1\mvm_resp
  • 1

image.png

配置阿里云镜像仓库:

使用maven时默认从中央仓库下载所需的包(插件),比较慢,可以配置使用阿里云提供的镜像仓库
编辑maven主目录下的/conf/setting.xml文件,在 标签中添加如下内容:

<mirror>
  <id>aliyunmaven</id>
  <!--所有都访问这个镜像仓库  -->
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

idea中配置maven

在idea中配置本地maven,idea也是自带了一个maven的,不过每次都是从中央仓库下载,这里我们修改一下。
image.png

maven项目目录

image.png
四种目录格式:灰色的就是普通文件夹。
image.pngimage.png

maven生命周期

几种生命周期的使用

maven的一些操作:
image.png

clean命令,删除target目录。运行会从成功target目录,里面存放字节码文件。

compile命令:将源代码编译成字节码文件,放在target/classes目录下面。

test:运行test下面的代码。

package:将项目打包成Jar包。

maven打成jar包并运行

使用了 maven-jar-plugin 插件来配置和打包 JAR 文件 ,主要是mainClass,配置项目的主类

 <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          <archive>
            <manifest>
              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              <addClasspath>true</addClasspath>
              <mainClass>com.njitzx.App</mainClass> <!-- 将 com.example.MainClass 替换为你的主类 -->
            </manifest>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

在cmd中运行maven项目:

java -jar mavendemo2-v1.1.1.jar
  • 1

install:点击install命令后,将jar包导入到了maven仓库。
image.png
那么如何在其他项目中引用呢?

<dependency>
  <groupId>com.njitzx</groupId> //公司域的倒写,自定义的
  <artifactId>mavendemo2</artifactId> //项目名称
  <version>v1.1.1</version> //版本号
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

image.png有的时候maven项目会出现一些问题,点击+选择项目的pom.xml文件。

pom.xml

maven项目的核心文件 pom:project object model 项目对象模型
pom.xml是Maven的核心配置文件,与项目构建相关的所有配置都在该文件中

依赖dependency
<dependency>
  <groupId>com.alibaba</groupId> //公司域的倒写,自定义的
  <artifactId>druid</artifactId> //名称
  <version>1.1.14</version> //版本号
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

坐标
用来唯一的标识每个项目,必须为项目定义坐标,且坐标必须唯一
Maven坐标是通过一些元素定义的:groupId、artifactId、version

scope表示依赖的作用域,用来配置依赖的jar包的可作用范围,即在什么地方可以使用。
image.png

properties

全局属性,一般情况下用于定义全局的jar的版本 通过${标签名}得到全局的jar版本。
使用快捷键 ctrl+alt+v 将版本添加上去。
:::info

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<spring.version>5.3.27</spring.version>

:::
image.png

repositories

给项目单独指定远程仓库

如果有私服,或者有些jar包阿里云上面没有。先去私服上面找,如果这个地方还找不到就去maven全局上面找。
image.png

插件

插件是一种工具,如:
maven-clean-plugin插件是用来清理项目的工具
maven-compile-plugin插件是用来编译代码的工具

Maven高级

继承 聚合 和 依赖

继承

image.png
继承:一个Maven工程继承自另一个Maven工程,分别称为子工程、父工程
实际开发中一个大项目会拆分为多个子项目(子模块/子工程),多个子工程使用的技术基本都相
同,即多个子工程中使用的是相同的依赖或插件等配置,此时可以把相同配置抽取到一个父工程中,进
行统一管理,保持一致性,简化pom.xml配置

父工程打包的方式是pom

image.png
在子项目中指定父项目的坐标,并指定父项目pom.xml文件的路径

<parent>
  <groupId>net.wanho.study</groupId>
  <artifactId>parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <!-- 指定父项目pom.xml文件的相对物理路径 -->
  <relativePath>../parent/pom.xml</relativePath>
  指定父项目的坐标,并指定父项目pom.xml文件的路径
</parent>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

#### dependencyManagement 父工程的jar包子类不一定全部需要,使用dependencyManagement,父类并不会加载这些依赖,只给子类引用
![image.png](https://img-blog.csdnimg.cn/img_convert/0b3a5dac043b0a19d3be847c9f2da0d6.png)![image.png](https://img-blog.csdnimg.cn/img_convert/9f8dbd5907816d2a868a46c68894fc57.png)
dependencyManagement,让子类进行有需求继承。

如果子项目想继承父项目的jar包,需要在子项目中手动引用,且引用时只需要配置groupId和
artifactId,无需指定版本version
image.png

聚合

将多个子项目聚合到一个父项目中,然后通过对该父项目进行操作,从而实现对所有的聚合项目的操作
在父项目中聚合子项目:

<!-- 聚合子项目,指定子项目的根目录-->
<modules>
<module>../child01</module>
<module>../child02</module>
</modules>
  • 1
  • 2
  • 3
  • 4
  • 5

image.png

依赖

项目C —> 项目B —> 项目A 
概念:如果项目C依赖于项目B,项目B依赖于项目A,则项目C也依赖于项目A,这叫依赖的传递
步骤:
1. 配置依赖关系 
child03——>child02——>child01
2. 在child01中添加依赖时,child02和child03会传递该依赖,也会出现该依赖
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

image.png 传递依赖。

多依赖的项目想要打包,在父工程中进行打包操作。因为之间有依赖关系,一个个打包会出现错误。

如何将自己写的jar包添加进入maven依赖中去

当我们的idea无法自动下载所需的Maven依赖时,我们可以到Maven的远程仓库中下载所需要的jar包,然后添加到我们的本地仓库中。

mvn install:install-file
     -Dfile=D:\mybatis-3.5.10.jar  //所在文件夹目录
     -DgroupId=org.mybatis  公司域名倒写
     -DartifactId=mybatis 名称
     -Dversion=3.5.10  版本号
     -Dpackaging=jar  导入的形式
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

image.png
添加成功
image.png

插件

maven-clean-plugin 插件是用来清理项目的工具
maven-compile-plug
  • 1
  • 2

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/942626
推荐阅读
相关标签
  

闽ICP备14008679号