Maven使用学习


maven学习b站视频

第一章

简介

Maven是一个Java项目管理和构建工具,可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建。

为什么要用Maven进行project management?

传统java项目开发过程中存在的问题?

• 项目中需要导入很多模块,模块之间又互相依赖,需要开发人员手动管理模块之间的关系,比较繁琐。
• 需要许多第三方的功能,因此需要导入很多.jar文件,手工从网络中获取各个.jar文件
• 与此同时需要管理多个.jar文件的版本
• 需要管理多个.jar文件之间的相互依赖,比如项目中需要a.jar中使用b.jar中的类,那么必须首先获得b.jar包才可

maven神器的作用

• 可以管理jar文件
• 自动下载jar文件的文档和源代码
• 可以管理jar文件的依赖
• 管理所需要的jar版本
• 帮助编译java程序,编译为class文件
• 帮助测试demo是否正确
• 帮助打包demo
• 帮助部署项目

maven的核心概念简要介绍
  1. POM:一个文件,pom.xml, pom:项目对象模型;maven把一个项目当作一个模型使用,控制maven构建项目的过程,管理jar依赖。
  2. 约定的目录结构:maven项目的目录和文件的位置都是规定的
  3. 坐标:是一个唯一的字符串,用来表示资源的。
  4. 依赖管理:管理你的项目可以使用jar文件
  5. 仓库管理:存放资源的位置
  6. 生命周期:maven构建项目的过程就叫做生命周期
  7. 插件和目标:执行了maven构建的时候用的工具是插件
  8. 继承
  9. 聚合
maven3.6.3安装

maven安装教程
maven安装在:

/Users/yangjin/Library/Maven

修改maven的settings.xml中本地仓库位置为:

/Users/com.alibaba.maven/repo

远程中心库链接地址尚未修改

第二章

Maven核心概念

1. Maven工程约定的目录结构

比如对于一个名称为Alibaba的project
Alibaba/
—/src
------/main #存放java的main demo
---------/java #存放程序包和包中的java文件
---------/resources #存放java程序中的配置文件
------/test #测试程序文件(可选)
---------/java #存放test程序包和包中的java文件
---------/resources #存放test程序中的配置文件
—pom.xml #maven的核心文件
可以写个shell脚本直接生成对应的文件目录结构
直接使用阿里云知行动手实验室的脚手架生成框架,爽的一批(不过目前生成的框架内容感觉有些单薄,后续可以继续完善)
Aliyun Java Initializr

2. mvn compile编译src/main目录下的所有java文件

maven工具执行的的操作需要很多插件(实际上就是一些java class),因此需要download,下载的东西存放在之前修改过的本地仓库
mvn compile编译后会在项目的根目录下生成target结果目录

3. pom.xml文件–项目对象模型

maven把一个项目结构和内容抽象为一个model,在xml文件中进行描述,pom.xml文件是maven的灵魂。
• modelVersion:maven版本
• groupId:组织id,一般是企业域名的倒写+project名称 比如com.alibaba.damo
• artifactId:项目名称
• version:project的版本号

• groupId、artifactId、version三者组成一个坐标,可以唯一标识一个project

• packaging:项目打包的类型 jar/war等等
• dependencies/dependency:添加依赖项
只需要通过坐标即可添加对应的依赖项
• build:表示与构建相关的配置,比如配置编译插件的jdk版本
• parent:在maven中如果多个模块都需要申明相同的配置,比如有相同的依赖,可以类似java的继承机制,用parent声明要继承的父工程的pom配置。
• modules:为了统一构建整个项目的所有模块,可以提供一个额外的模块,该模块的打包方式为pom,并且在其中使用modules聚合其他模块。

4. 仓库

修改maven安装路径下的conf/setting.xml的文件,可以变更本地仓库地址
可以变更远程链接仓库的地址
1)仓库存放maven需要的java包以及项目文件所需的java包
2)仓库有本地仓库和远程仓库,本地仓库在本地pc中,远程仓库(需要联网才可使用)有中央仓库;中央仓库的镜像;私服(企业内部);
3)仓库的使用:maven仓库的使用不需要人为参与
举例:假设demo中需要mysql驱动,maven首先查本地仓库,接着查本地仓库,然后查中央仓库镜像,最后在访问中央仓库。

5. Maven常用命令

mvn compile 编译main文件夹中的java文件夹中所有java文件
mvn clean 会清理原来编译和测试的目录,即target目录,已经install的包不会被clean掉
mvn test-compile编译测试源文件
mvn test 测试,会在target文件夹下生成report报告
mvn package打包,打包后的文件只包含src/main下的文件
mvn install 安装主程序
mvn deploy部署

1)单元测试:使用junit,juint是一个专门进行单元测试的工具。junit测试的是类中的方法,每一个方法都是独立测试的。(在pom中添加dependency)
假设要测试一个Hello类,首先要创建测试类,比如TestHello,然后定义测试方法
测试方法需要声明@Test ,且测试方法必须是public,并且没有返回值。方法名称可以是自定义的,推荐test+方法名称。

第三章

Idea中设置Maven

尽可能使用自行安装的maven,覆盖idea中默认安装的maven设置。

令人dt的操作开始了

  1. 首先本地创建自己的本地仓库(这里建议设置在/Users/username/下)
    比如/Users/eden/maven/repo,之所以设置在username下是因为直接设置在Users可能会出现文件夹权限的问题,比较dt。保险起见,创建好local仓库之后最好

chmod -R 755 仓库名

  1. 然后修改maven安装路径下的conf下的settings.xml文件,需要修改两个地方,一个是settings中的添加
    /Users/****/maven/repository
    除此之外添加阿里云镜像
<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*</mirrorOf>
  <name>aliyun mirror</name>
  <url>https://maven.aliyun.com/repository/central</url>
</mirror>
  1. 然后把maven安装路径下的conf下的settings.xml文件拷贝到与本地仓库同级目录下,比如/Users/eden/maven/
  2. 在idea中配置maven环境,Perferences->Build,Execution,Deployment->Maven下进行配置,常规配置操作见下述blog资料

这里需要注意的一点是,需要配置所安装的jvm环境,在maven->importing->JDK for importer中选择。因为会有默认的一个jvm环境.
终端输入/usr/libexec/java_home -V 会有两个JVM选项,第二个才是我们自行安装的,第一个是默认的。否则后续maven compile会出错

通过上述步骤即可在idea中快乐的使用maven了,*。

其他

pom.xml文件配置相关

scope字段

表示的是依赖范围,也就是在maven构建项目的过程中哪些步骤中起作用;有compile,test,provided三个值
maven构建项目有清理,编译,测试,打包,安装,部署几个过程
test:测试
compile:清理,编译,测试,打包,安装,部署
provided:清理,编译,测试

properties字段,maven的属性设置
maven的全局变量

自定义属性:

  1. 在properties中通过自定义标签声明变量
  2. 在pom文件中的其他位置中使用标签名/变量名:${标签名}使用变量的。

自定义全局变量一般是定义所依赖的版本号,当你的项目中要使用多个相同的版本号,先使用全局变量进行定义,即可方便使用:
语法为:(举例)
<java.version>1.8</java.version>
java.version就是标签名/变量名

资源插件resources/resource字段
<build>
    <resources>
        <resource>
            <directory>src/main/java</directory> 
            <includes>
                <include>**/*.png</include>
                <include>**/*.txt</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>
  1. 默认在pom中没有使用resources的时候,maven执行编译的时候,会把src/main/resources目录中的文件拷贝到target/classes目录中,对于src/main/java中的非.java文件是不进行任何操作的,不copy到target/classes中
  2. 但是有些时候程序需要把一些文件放到/src/main/java目录下,在执行java程序时需要用到其中的文件,比如对txt文本数据进行操作等等。此时就需要告诉maven在进行compile的时候要把src/main/java下的文件一同copy到target/classes目录中。此时就需要用到resources字段。

参考资料合集

Aliyun Java Initializr
阿里云云效 Maven 镜像地址
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
resources-plugin-2.6.pom.part.lock (没有那个文件或目录)

上述仅仅是关于Maven的简单介绍和使用,确保初学者可以快速的了解和使用Maven,至于在使用过程中的其他细节,还需要开发者后续逐步积累。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值