• 【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环境

  • 相关阅读:
    myeclipse源码相关操作
    来自一个程序员内心深处的心声
    编程乐趣--汉字转拼音
    MyEclipse下安装FreeMark插件
    java web 加载Spring --web.xml 篇
    注解方式实现声明式事务管理
    spring与struts简单整合案例
    创建对象与对象依赖关系
    几种对数据的处理以及对数据的封装
    Action开发、通配符、路径问题和struts中常量用法
  • 原文地址:https://www.cnblogs.com/twz123/p/11517869.html
Copyright © 2020-2023  润新知