• 杂谈maven工程类型(2)


    Maven工程类型

    在maven构建中,分为若干类型,相当于ANT构建中的java project | dynamic web project

    Maven构建中的工程类型是配置中的一个选项---->packaging选项

    代表包结构类型,在对应的工程类中创建对应的目录结构

    1、jar

    相当于java project ,本地java工程,没有网络应用的java工程

    理论上只有源代码和字节码

    对于maven工程,对代码、资源、字节码的管理非常细致

    目录结构分为:

    src

    源信息

      src/main/java:

      代表java代码目录,就是原ANT构建中的src中的代码 信息,代表当前工程的核心内容

      如:pojo,数据访问对象DAO,控制层的Controller

      在本目录下,有特定的构建方式,Maven只会编译当前目录中的java源代码,不管理任何的配置文件

      src/main/resource:

      当前木丁定义src/main/java目录中源代码需要的配置文件的位置

      在当前目录中定义配置文件,不做任何操作,直接复制到target对应的目录中

      在本目录定义java源文件,不会做编译处理

      src/test/java:

      测试代码目录,如果有必要写测试案例,则将测试代码写在当前目录中

      测试代码可以访问src/main/中的所有代码和配置信息

      当前cesium目录中的代码不会发布

      此时目录中的代码在maven安装编译得时候,自动触发运行

      自动触发的都是junit测试案例,被@Test注解描述的方法

      如果测试代码有任何错误,则安装编译失败

      src/test/resource:  

      测试代码需要的配置文件,不会发布,只能被src/test/java目录中的代码访问

    target

    目标信息,相当于是字节码目录,也就是Ant构建中的bin目录

    target目录中的子目录和src中的代码结构完全一致

    2、war

    是jar工程的升级版,相当于dynamic web project,目录与jar一致,增加新的目录

    src/main/webapp

    相当于web 工程中的WebContent目录,用于定义网络内容

    如:WEB-INF,web.xml,lib等

    在maven工程中的war工程中,默认不存在WEB-INF目录和web.xml文件

    在wen工程中,强制要求结构为:

    webapp/

        /WEB-INF

            /web.xml

    因此在创建war工程时候,大多数情况有异常

    新建war工程

    手动添加

    3、POM文件

    是maven中定义的逻辑工程(理解为java的抽象类)

    POM工程是maven中用于定义公共性的工程,如:公共父工程、聚合工程

    只是一个逻辑上的工程,但是不需要编写代码、配置等固定信息

    管理其他工程的工程

    没有特定的目录结构,只有src/site目录,代表逻辑管理目录

    4、工程的核心配置

    pom.xml是maven工程中的核心配置文件

    用于配置maven工程中的依赖关系、资源、插件、信息定义等

    依赖:当前工程需要什么jar包,相当于java中的对象应用,已经具体使用了

    关系:当前工程和其他工程之间有什么关系,依赖、继承、聚合

    资源:定义当前工程和其子工程都需要什么jar,相当于java中类型的定义,未使用,仅定义

    信息定义:统一的定义需要使用的版本,文件名称等,类似ava中的properties配置文件

    相关测试

    工程关系:依赖、继承、聚合

    依赖

    多个工程之间依赖,依赖方有被依赖方的所有资源

    如:A工程依赖B工程,则A工程可以使用B工程所有的资源,不包括测试资源src/test目录中的资源

    就是pom文件中的dependency

    创建两个maven工程

    B中添加新的User类

    A工程中使用B工程中的User(依赖
      <dependencies>
          <dependency>
               <groupId>com.b</groupId>  
               <artifactId>B</artifactId>
               <version>1.0</version>
          </dependency>
      </dependencies>

    继承

    多个工程之间的继承关系,代表子工程有父工程的所有资源,不包括测试字眼,常用于管理依赖信息

    如:D工程继承C工程,代码D可以访问C工程中的所有资源信息

    父工程要求:

    父工程必须是逻辑工程,不能是实际工程

    父工程必须是pom工程,不能时jar和war功能

    新建cd两个工程:

     D中

      <parent>
            <groupId>com.c</groupId>
           <artifactId>C</artifactId>
           <version>1.0</version>
      </parent>
     
    C中:
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.4.1</version>
      </dependency>
      </dependencies>

    聚合

    多个小工程,聚合为一个大的完整工程

    如ssm工程,聚合了pojo、mapper、service、controller这四个工程,代表4个子工程是一个完整的聚合工程ssm

    聚合工程代表缺一不可,聚合工程的完整工程是真实存在的工程,而内部的子聚合工程是完整工程的一个目录体系

    聚合父工程是一个macen project,聚合子工程是一个maven project

    聚合父工程的package必须是pom,聚合子工程的packaging无要求

  • 相关阅读:
    Docker PHP 扩展配置
    PHP 打水印功能
    MYSQL的主从复制
    CentOS7开启防火墙及特定端口
    非常全面的讲解Hosts文件
    STL的erase()陷阱-迭代器失效总结
    scons使用
    SecureCRT 使用技巧
    atomic, spinlock and mutex性能比较
    内存池的实现(二)
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/11502281.html
Copyright © 2020-2023  润新知