Maven学习心得——快速入门Meven
学习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
- 点赞
- 收藏
- 关注作者
评论(0)