Maven学习心得——快速入门Meven

举报
徐同学呀 发表于 2022/02/24 00:02:36 2022/02/24
【摘要】 学习maven有一些感想: 起初不是很了解maven,到现在也是略懂皮毛,我只知道他是一个管理依赖jar包的工具,现在用的时候也是通过IDEA 和 eclipse里的插件在使用,没强记过它的一些常用命令...

学习maven有一些感想:

起初不是很了解maven,到现在也是略懂皮毛,我只知道他是一个管理依赖jar包的工具,现在用的时候也是通过IDEA 和 eclipse里的插件在使用,没强记过它的一些常用命令,编辑器都有简单的操作,不需要你输入命令。
但是今天在打包一个springboot项目的时候,出了问题,package命令的执行过程是validate–>compile–>test–>package,我的项目里加了websocket的jar,但是在测试环境下老报错,运行环境可以,可能是加的依赖包和现有的包重了。我也改了依赖的scope,默认是compile,我改成了provided,但是没解决问题,只能通过命令了,让它在打包的时候跳过测试环境,最后打包成功。


学习maven你暂时不需要做的事:

  • 你不需要了解groupid、artifactId、version等有什么用
  • 你不需要去记命令
  • 你不需要深入了解maven的原理,会用就行

学习maven你必须要做的事:

  • 知道怎么用编辑器简单使用maven(现在的编辑器如IDEA,安卓的,eclipse都自带maven插件,非常自动化)
  • 你要会找dependency,推荐网站(http://mvnrepository.com/
  • 遇到关于maven的问题要会通过百度解决
  • 当然还要会在自己的电脑上配maven环境(百度经验有

下面记述一个比较高深的东西,maven的聚合与继承

这是一个父pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>user_parent</groupId>
  <artifactId>parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <modules>
    <module>../user_dao</module>
    <module>../user_service</module>
  </modules>

  <properties>
    <spring.version>4.1.7.RELEASE</spring.version>
    <junit.version>4.12</junit.version>
    <log4j.version>1.2.17</log4j.version>
  </properties>
<dependencyManagement>
  <dependencies>
  <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>

        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>${junit.version}</version>
          <scope>test</scope>
        </dependency>

        <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    </dependencies>
  </dependencyManagement>
</project>

聚合:<modules></modules>

从字面意思来说,module就是模块,而pom.xml中的modules也正是这个意思,用来管理同个项目中的各个模块;如果maven用的比较简单,或者说项目的模块在pom.xml没进行划分,那么此元素是用不到的;不过一般大一点的项目是要用到的。

使用场景:

如果我们的项目分成了好几个模块,那么我们构建的时候是不是有几个模块就需要构建几次了(到每个模块的目录下执行mvn命令)?当然,你逐个构建没问题,但是非要这么麻烦的一个一个的构建吗,那么简单的做法就是使用聚合,一次构建全部模块。

版本号统一管理:

在spring的依赖中,我们需要引用一系列版本的spring,如版本1.2.6。每次都写不利于维护。所以加入标签properties,动态注入版本号。

<properties>
    <spring.version>4.1.7.RELEASE</spring.version>
  </properties>

继承当然要有父和子,举例:

user_dao项目的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

    <parent>
    <groupId>user_parent</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../parent/pom.xml</relativePath>
  </parent> 

  <groupId>com.user.login</groupId>
  <artifactId>user_dao</artifactId>
  <packaging>jar</packaging>

  <name>user_dao</name>
  <url>http://maven.apache.org</url>

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

  <dependencies>
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
</dependency>


    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

明显的看见有<parent>标签

<parent>
    <groupId>user_parent</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../parent/pom.xml</relativePath>
  </parent>

groupId、artifactId、version对应的是父pom.xml的信息,relativePath这个标注父pom.xml在哪里。
你仔细看,依赖包的的版本号都没了,这是因为在父pom.xml里统一管理了。
maven的聚合和继承如果是自己的小项目没必要用,但是公司里的项目多了,大项目下还有子项目就需要统一管理。

学习maven的一些小知识:

在添加依赖时下载很慢,原因是maven的远程仓库在国外,要想下载快,用阿里云仓库。

在maven的安装包下(我的D:\maven\apache-maven-3.5.2\conf)找到settings.xml打开找到标签mirrors
复制替换下面的阿里仓库配置即可

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

如果自己用maven写了一个集成的工具,想要在其他项目中直接引用,可通过install,将工具打包成jar自动存放在本地仓库,像其他依赖一样加入即可。

如:

<dependency>
  <groupId>com.user.login</groupId>
  <artifactId>user_service</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</dependency>

将本地仓库移出c盘(默认在c盘,我的在C:\Users\asus.m2\repository),一旦重装系统所有依赖就得重新下载,而且c盘很满看着不舒服

在settings.xml里我同样找到了这个标签,只是被注释掉了,我们可以不用打开注释 <localRepository>D:\maven\repository</localRepository>

<!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->

我们在项目中改动最多的地方是这里面添加依赖<dependencies></dependencies>,实际中再遇到什么问题,百度即可。


象征性的粘贴些maven的常用命令

编译源代码: mvn compile

编译测试代码:mvn test-compile

运行测试:mvn test

打包:mvn package

跳过测试打包:mvn install -DskipTests 或者mvn install -Dmaven.test.skip=true

在本地Repository中安装jar:mvn install

清除产生的项目:mvn clean

生成eclipse项目:mvn eclipse:eclipse

生成idea项目:mvn idea:idea


一些认知性的知识:

modelVersion:POM 模型版本 4.0.0 固定

groupId:一般指某个公司或者某个组织的某个项目 比如 org.springframework

artifactId:一般指某个具体项目的某个具体模块 比如 spring-context

Version:项目的版本

Mvn 远程仓库地址:http://mvnrepository.com/


学习maven其实很简单,先不求甚解,使用了再说。在使用中学习,知道它在一个项目中的作用,遇到问题了,就去百度,解决问题的过程会让你对它的认识更加透彻。

学习其他新知识也一样,认知过程是痛苦的,直接与它近距离接触才能慢慢揭开它的神秘面纱。


本人看过的学习maven视频链接,还不错,推荐给大家。

链接:https://pan.baidu.com/s/1eUhbj2q 密码:se0o

有任何问题,请评论留言。

文章来源: blog.csdn.net,作者:徐同学呀,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_36586120/article/details/79131984

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。