【maven的使用】2使用maven与pom文件

一、使用maven:
首先需要知道的是,在我们开发人员中有一句话叫做:约定优于配置
比如,如果我们写代码有多种可选方案:
硬编码形式:obj.setPath("d:/xxxx") 、配置形式:conf.xml -> <path>d:/xxx</path>、约定形式:使用默认值d:/xxx
maven使用的就是约定形式,它约定为main目录中写执行项目,test目录中写测试项目,当执行命令下达则maven会在main中找,测试命令下达在test中找。

maven约定的目录结构:
项目
  --src
    --main #程序代码
      --java #java代码
      --resource #资源代码、配置diamante
    --test #测试代码
      --java
      --resource
  --pom.xml #项目对象模型,还记得dom文档对象模型吗?dom是将html元素看成一个节点/对象,而pom是将项目看成一个节点/对象。

mvn的命令需要联网才能使用。
编译命令:
mvn compile # 只编译main目录中的文件
执行测试命令:
mvn test 如果是failures则是测试失败,error则是代码报错
打包命令:
mvn package # 只有测试通过才能打包,打包的同时它其实会自动测试一次。
安装命令:
mvn install # 将开发的模块(打成包的),放入本地仓库,供其他模块(小伙伴)使用
清除编译:
mvn clean # 删除target目录,即删除编译文件的目录。

这些指令存在顺序问题,比如如果执行test测试命令,则肯定需要先经过编译,所以compile指令也会执行。大致的指令顺序如下:

compile - > test -> package -> install

也就是说,如果执行install指令,则前面的指令都会被执行。

这些都需要一些maven的基础环境jar包,首先会进入本地mvn库中看是否有基础jar包,如果没有则会自动去中央仓库下载,所以第一次执行会慢一点。
需要注意的是,clean删除的不是本地仓库中的jar包,更不是清除install命令存入本地仓库的包,而是清除compile命令编译而成的字节码文件。
如果想要删除本地仓库中的项目jar,则要通过该项目的gav进入本地mvn库手动删除。

二、pom文件:

maven使用pom.xml文件来描述项目模型。html中的dom树将标签看做一个节点,而pom树则是将项目看做一个节点。

该文件的常见元素如下:

①<properties>元素:

<properties>元素用于定义全局属性(通过键值对的方式),充当与定义变量的作用,在里面可以自定义标签并指定值,再通过类EL表达式的语法适用。通过使用该属性能做到易于代码的修改和维护,并提高可读性。比如我通过该属性定义本模块的版本号的键值对:
<properties>
  <key1>value1</key1> 
</properties>
<version>${value1}</version>

②<dependencies>元素:

<dependencies>元素定义依赖关系,它可以包含多个dependency子元素,每个dependency都定义一个依赖关系。依赖关系通过gav,即坐标来定位依赖于哪个模块。
<dependency>
  <groupId>pers.tz.maven</groupId> # 大项目名
  <artifactId>HolleWorld</artifactId> # 子模块名
  <version>${value1}</version> # 版本号
  <scope>test</scope> # 依赖的范围和有效性,默认是compile
</dependency>
我们已经知道,maven一个很关键的作用将一个项目拆成若干个模块,所以大项目名负责在本地mvn库中定位,而子模块名责负责在总项目中定位,版本号也是在很多迭代的版本中定位。

③<dependencyManagement>元素:

定义父工程的依赖关系,它的子元素是<dependencies>元素。

④<parent>元素:

定义该工程继承自哪个工程,通过gav坐标和该工程的pom文件到父工程pom文件的相对路径来定位它的父工程。举例:
<parent>
  <groupId>pers.tz.maven</groupId>
  <artifactId>hollemaven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <relativePath>../hollemaven/pom.xml</relativePath>
</parent>
如果父工程的gav坐标和该工程的gav坐标有相同的部分,则可将那部分删掉,这是maven的约定。

⑤<packaging>元素:

指定项目目标打包类型,java工程打成jar包,web工程打成war包,父工程打成pom包。
<packaging>jar</packaging>

⑥<profiles>元素:

我们以前使用eclipsebuild path修改jdk版本,或右键项目、属性、project factors修改jdk版本。
现在我们可以使用pom文件中的profiles元素来修改环境。代码如下:
<profiles>
  <profile>
    <!-- 名字随便起 -->
    <id>jdk17</id>
    <activation>
      <!-- 激活 -->
      <activeByDefault>true</activeByDefault>
      <!-- 版本编号 -->
      <jdk>1.7</jdk>
    </activation>
    <properties>
      <maven.compiler.source>1.7</maven.compiler.source>
      <maven.compiler.target>1.7</maven.compiler.target>
      <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
    </properties>
  </profile>
</profiles>

该元素更多的作用我暂时还不知道-.- 我暂时使用它来修改jdk环境

原文地址:https://www.cnblogs.com/twz123/p/11517869.html

时间: 2024-08-15 15:27:53

【maven的使用】2使用maven与pom文件的相关文章

Maven学习(3)-依赖管理-POM文件中依赖的范围定义

来源: https://www.cnblogs.com/best/p/9676515.html#_lab2_1_2 https://www.cnblogs.com/kabi/p/8509049.html POM文件中的依赖可以通过<scope>标签定义依赖范围: <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.1

Maven学习(3)-依赖管理-POM文件中依赖的版本管理

pom.xml中依赖的定义样例: <dependencies> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency></dependencies>

MyEclipse导入Maven项目pom文件第一行报错,运行Tomcat报Log4j错误--解决方法

问题描述: 前一段时间电脑第一次导入Maven项目,又是pom文件错,改好后又是运行Tomcat报Log4j错误,一直倒腾了近一个月程序才成功跑起来,太不容易. 也上网查了很长时间,没一个方法能解决我的问题的.特记下解决方法,希望能帮到像我这样的web刚入门者. (刚入门,肯定有说的不对的地方,有错也希望能指出来,我改正) 前期操作:导入项目后clean,install,update,中会报错(因为我已经解决了,所以没有×). 两问题对应解决方法: 1.pom文件第一行大红叉,说明是项目的文件指

Maven命令与pom文件常量

端碗吹水 Maven命令: Maven不单止可以在Eclipse上使用,也可以在cmd中使用命令的方式操作,虽然这样十分麻烦,而且有一般也不会使用,但是还是得了解一些可能会用到的操作方式. 1.mvn compile命令:此命令用于编译工程,使用此命令在cmd里编译工程代码时,需要先cd进工程目录下,不然会报错. 使用命令编译工程的话,工程文件夹可以[学Java,到凯哥学堂kaige123.com]自己手动创建,这个手动创建的样式和用Eclipse创建的样式差不多,工程文件夹下是main和tes

Maven 项目依赖 pom 文件模板

下面是网上down的 pom 文件模板: <!-- 属性 --> <properties> <spring.version>4.2.4.RELEASE</spring.version> <hibernate.version>5.0.7.Final</hibernate.version> <struts.version>2.3.24</struts.version> </properties> <

maven建ssh项目的pom文件

<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/maven-v4_0_0.xsd"> <modelVersion&

关于使用命令添加jar进自己的pom文件中-maven项目添加jar包

现在几乎开发项目都是使用的maven项目,但是有的时候可以使用比较偏门或者新的jar可能在网上搜不到在pom文件里的配置应该如何写,因此写下这篇博客. 比如我现在想加入的AAA.jar这个包 打开cmd,在里面输入命令 mvn install:install-file -Dfile=想添加jar包的位置(比如E:/AAA.jar) -DgroupId=这个包放在你本地库的位置(例如com.公司名.你这个包的相关起这个名 com.xxxx.BBB) -DartifactId=BBB -Dversi

【maven】maven创建web项目-pom文件提示web.xml is missing and &lt;failOnMissingWebXml&gt; is set to true

使用maven创建web项目,选择war类型后,pom文件红叉 提示web.xml is missing and <failOnMissingWebXml> is set to true 也有可能: 初始创建了本项目为web项目,然后虽然把web.xml文件放在了WEB_INF下,这两个文件夹虽然放在webapp下了,但是还是报错 解决方法: 这时候需要右击项目-->Java EE Tools-->Generate Deployment Descriptor Stub.然后系统会在

Maven常用命令大全与pom文件讲解

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲解是Maven使用过程中一些常用的命令,并配上图片说明,最后还讲了pom.xml文件的一些构造. 一.Maven常用命令 1.1.Maven 参数 -D 传入属性参数 -P 使用pom中指定的配置 -e 显示maven运行出错的信息 -o 离线执行命令,即不去远程仓库更新包 -X 显示maven允许的debug信息 -U 强制去远程参考更新snapshot包 例如 mvn i

maven项目中POM文件报plugins找不到错误

今天要用maven建一个项目,但是项目创建完成以后再POM文件中报错了,具体错误如下所示: 上面是什么意思呢?简单翻译就是说maven-surefire-plugin这个插件找不到,解决办法如下所示: 首先打开本地仓库,按照org\apache\maven\plugins\maven-surefire-plugin\2.12.4路径打开文件夹,发现里面只有maven-surefire-plugin-2.12.4.pom.lastUpted这样的以lastUpted结尾的文件, 这些文件全部删除掉