Maven知识点总结

maven中各文件的作用

bin:保存可执行性命令,因此要将其路径添加到PATH中,以便在命令行中使用maven命令。

boot:只包含plexus-classworlds-2.5.2.jar,maven用其加载自己的类库。

conf:保存maven配置文件的目录,setting.xml可用于配置Maven。

lib:该目录包含了所有maven运行时需要的类库。

其余为说明性文档。


setting.xml中的标签

localRepository:用于设置Maven的本地资源库路径,默认保存在用户Home目录的.m2/repository下

offline:设置为false时,当maven找不到插件、依赖库时,会自动从网络下载

proxies:设置maven访问网络的代理服务器

interactiveMode:设置交互模式,如果为false,maven将使用默认值


maven的部分命令格式

运行插件

方式一:

mvn <plugin-prefix>:<goal> -D<属性名>=<属性值>...

plugin-prefix:插件名称

goal:指定该插件所包含的指定目标

可以设置多个属性名、属性值对


方式二:

mvn <plugin-group-id>:<plugin-artifact-id>:<plugin-version>:<goal>

plugin-group-id、plugin-artifact-id、plugin-version称为maven的坐标,可唯一的确定某个插件


创建java项目
mvn archetype:generate -D interactiveMode=false -D groupId=开发者域名 -D artifactId=项目名 -D package=项目打包的类型

生成的maven项目结构如下:



源代码应该位于src/main/java下,资源文件(配置文件)应该位于src/main/resources下,测试代码位于src/test下,编译生成的class文件位于target下


编译maven项目

进入到pom.xml文件所在路径,执行以下命令

mvn compile



运行maven项目
mvn exec:java -D exec.mainClass="编译后含有主函数的类文件的路径"


下面给出个实例:

1、创建项目



项目的位置请在执行日记中查找



2、进入项目目录



3、编译项目


编译后在target的classes目录下可以找到编译后的类文件,就本例来说,编译后的类文件位于C:\Users\lzy\demo\target\classes\jar


4、执行项目


mainClass参数值为target\classes下的包名+类文件名,本例为jar.App


遇到的异常:

1、No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

环境变量没有配置JAVA_HOME对象


2、Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project demo: An exception occured while executing the Java class. App

  

mvn exec:java -D exec.mainClass路径错了


maven的生命周期

生命周期是指maven构建项目时的多个有序阶段(phase)

可以使用以下命令通知maven执行生命周期中的一个或是多个阶段

mvn <phase1> <phase2>

maven包括三个生命周期,这里只介绍两个:

1、clean:清除target目录下的jar文件

2、default:包括如下生命周期:

     1、compile:编译

     2、test:运行测试代码

     3、package:项目打包

     4、install:安装到本地仓库(存放jar包的文件,通过localRepository设置)

     5、deploy:部署到远程仓库(通过pom.xml文件中的repositories配置)

    上述生命周期按顺序执行,如果我们使用mvn install,将先后执行compile、test、package、install生命周期


pom.xml

pom.xml是一种项目对象模型的描述文件,其中定义了项目需要的依赖,打包成jar、war文件时需要遵循的规则等等,每个maven项目的pom.xml都有一个上级pom.xml文件(其中定义了大量默认配置,如果想要改变这些默认配置,只需在本项目pom.xml文件中定义相应元素进行覆盖即可),上级pom.xml中的配置信息会合并到本项目的pom.xml文件中,类似于类的继承,这被称为依赖传递,springboot中的起步依赖就利用了这点


pom.xml中的元素包括:

<properties....../>:用于定义全局属性

<dependencies...../>:用于定义依赖关系,可以包含多个<dependency>子元素

<dependencyManagement...../>:用于定义依赖管理

<build...../>:定义构建信息(打包成jar或是war包时需要执行的某些步骤),例如定义jar包的位置

<reporting..../>:定义站点报告的相关信息

<licenses...../>:定义改项目的License信息

<organization...../>:指定改项目所属组织信息

<developers...../>:配置开发者信息

<contributors....../>:配置项目贡献者信息

<issueManagement....../>:定义项目的bug追踪系统

<mailingLists....../>:定义邮件列表

<scm...../>:指明改项目的源代码管理工具

<repositories...../>:用于定义远程资源库的位置

<pliginRepositorie...../>:用于定义插件资源库的位置

<distributionManagement...../>:部署管理

<profiles...../>:根据环境调整构建配置


<dependency...../>元素可以具有以下子元素:

<groupId..../>:指定依赖所属组织

<artifactId....../>:指定依赖的项目名

<version...../>:指定依赖的版本

<scope....../>:指定依赖作用的范围

       compile:默认值,编译、测试、打包时都需要该依赖

       provide:运行时需要该依赖

       runtime:测试、运行时需要,打包时会包含该依赖

       test:该依赖只用于测试阶段

       system:与provide相似,但该依赖必须是操作系统自带的

       import:表示该依赖继承父POM文件中<dependencyManagement>中配置的依赖

<type..../>:指定依赖的类型,例如jar、war

<optional....../>:指定该依赖是否可选

<classifier......./>:指定对应依赖是在哪个JDK版本下编译的

<exclusions..../>:用于排除依赖中的某些依赖(例如,我想使用本依赖下的springmvc,但是不会使用到mybatis,便可利用该元素排除本依赖下mybatis的依赖)


maven通过dependency中的groupId、artifactId、packaging(项目的打包类型,可选)、version(可选)来确定一个依赖


maven的优势

在我看来,使用maven最大的便利之处是,只要我们在pom.xml中配置依赖,maven就可以自动下载我们需要的依赖(若本地资源库没有该依赖)。



猜你喜欢

转载自blog.csdn.net/dhaiuda/article/details/80143613