maven学习笔记

简介:

概述

对于Java程序员来说,Maven是构建项目的一大利器,它可以方便、快速的构建出软件的基本目录以及配置文件。

安装

Maven是基于Java的一个项目构建工具,所以,安装Maven之前必须要安装JDK,安装方法就是配置环境变量。

介绍

pom文件介绍

POM,全称是Project Object Model.它是Maven工程最基础的文件,像定义项目名称、定义项目所属组名称、引入依赖等功能都是在pom.xml文件中声明定义的。

Maven生命周期介绍

Maven生命周期是指,用Maven创建一个项目,或者编译一个项目,Maven都做了哪些事。
在这里我引用下极客学院的生命周期表
部分截图

当然,我们在执行Maven命令的时候,可以给定参数,使Maven跳过某些步骤,例如加上参数mvn -DskipTests=true clean install编译的时候,就会跳过编译测试用例代码的过程,从时间可以加快编译,原理上就是Maven没有执行"test-compile","process-test-classes" 等生命周期步骤。

这里我用两个命令对比说明一下执行顺序不同的影响。
mvn clean install首先,Maven会先执行清理工作,(当然清理工作在Maven中也分为了"pre-clean","clean","post-clean"3个步骤,在这里,我先不管clean的具体步骤)。clean时,会删除之前编译好的文件,这些文件在target目录里。然后,在执行install时,会把编译生成的文件放到target目录里面。
mavn install clean这条命令和上面的命令不同的是clean和install的顺序不同,这条命令执行时,会先把编译生成的文件放到targe文件中,然后执行clean生命周期,清除编译好的文件,即,删除target目录中的文件,这相当于,花了时间编译,最后缺什么也没有留下(被删除了)。
所以,理解Maven的声明周期,有助于解决Maven在编译不通过时,定位问题,具体是哪个过程出了问题,为什么会出现这个问题。

settings.xml介绍

setting顾名思义,就是Maven的全局设置。在这里,主要需要说明两点问题。

  1. Maven源。Maven默认的源是Apache的,国内访问慢死了。所以一般都换成国内的,比如开源中国的源和阿里巴巴的源。
<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror> 
<mirror>
    <!-- 镜像所有远程仓库,但不包括指定的仓库 -->
    <id>mirror-osc</id>
    <mirrorOf>external:*,!repo-osc-thirdparty,!repo-iss</mirrorOf>
    <url>http://maven.oschina.net/content/groups/public/</url>
</mirror>

2.修改本地仓库路径。
本地仓库是你从远程Maven库中下载来的jar包所存放的位置。默认会在C盘某个地方。所以需要修改它为自己制定的一个地方。例如我的路径为<localRepository>E:\SoftwareKit\maven_repository</localRepository>放在了E盘下SoftwareKit目录下的maven_repository目录中。

创建工程

windows在CMD下输入:

mvn archetype:generate -DgroupId=com.test.project1 -DartifactId=project1 -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

这会在cmd当前所在路径生成一个Maven工程。
项目名称是project1;项目代码所属的组织是com.test.project1(其实就是包名)。第三个属性看样子是快速构建;第四个属性是使用非交互模式进行,即,点击Enter后,会自动构建完成,不需要再手动输入参数了。

maven工程目录结构

用上面的命令会生成如下图目录结构的项目:
这里写图片描述
描述如图中:
这里写图片描述

用maven创建一个web项目的命令

mvn archetype:generate -DgroupId=com.testcompany.project2 -DartifactId=project2 -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

这里写图片描述
web项目会在main目录下生成webapp目录。用maven,相当于把web应用的基础结构搭建好了。

参考文档:极客学院的Maven教程

目录
相关文章
|
2月前
|
Java 应用服务中间件 测试技术
Maven学习笔记(一):Maven基础(基于命令行的学习和应用)
Maven 是一款 Java 项目构建工具,主要用于管理 jar 包及其依赖关系。 本文主要了解Maven基础知识及基础应用,旨在为之后的进一步学习奠定基础。 内容上几近全为学习《尚硅谷2022版Maven教程》整理所得。 仅供参考。
232 80
Maven学习笔记(一):Maven基础(基于命令行的学习和应用)
|
1月前
|
Java Devops 持续交付
Maven学习笔记(二):Maven基础(基于IDEA)
【10月更文挑战第1天】Maven 是一款 Java 项目构建工具,主要用于管理 jar 包及其依赖关系。上一篇简单介绍了Maven的基础知识,本文主要介绍IDEA上的实际使用场景。内容上几近全为学习《尚硅谷2022版Maven教程》整理所得。仅供参考。
147 0
Maven学习笔记(二):Maven基础(基于IDEA)
|
3月前
|
Java jenkins Shell
jenkins学习笔记之五:Maven、Ant、Gradl、Node构建工具集成
jenkins学习笔记之五:Maven、Ant、Gradl、Node构建工具集成
|
3月前
|
Java 测试技术 Maven
Maven学习笔记
这篇文章是关于Maven的学习笔记,包括Maven简介、项目构建工具比较、Maven的四大属性(依赖管理、多模块构件、一致的项目结构、一致的构件模型和插件机制)、Maven的安装和配置、IDEA集成Maven环境,以及Maven项目创建、仓库概念、多模块项目构建、打包操作和依赖概念的详细介绍。
|
3月前
|
Java jenkins 持续交付
jenkins学习笔记之十七:使用插件及maven上传制品到nexus
jenkins学习笔记之十七:使用插件及maven上传制品到nexus
|
6月前
|
XML Java 大数据
答应粉丝的Maven仓库学习笔记,今天它来了 一起来学习快速入门Maven
答应粉丝的Maven仓库学习笔记,今天它来了 一起来学习快速入门Maven
112 1
|
Java 测试技术 调度
[Java]Maven学习笔记(尚硅谷2022)(四)
[Java]Maven学习笔记(尚硅谷2022)(四)
|
XML Java 应用服务中间件
[Java]Maven学习笔记(尚硅谷2022)(三)
[Java]Maven学习笔记(尚硅谷2022)(三)
|
JavaScript Java Maven
[Java]Maven学习笔记(尚硅谷2022)(二)
[Java]Maven学习笔记(尚硅谷2022)(二)
|
存储 IDE Java
[Java]Maven学习笔记(尚硅谷2022)(一)
[Java]Maven学习笔记(尚硅谷2022)(一)