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工程

maven 和java基础不一样吗 maven project和java project的区别_web.xml

 

 

手动添加

maven 和java基础不一样吗 maven project和java project的区别_java_02

 

 

 

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工程

maven 和java基础不一样吗 maven project和java project的区别_配置文件_03

 

 

B中添加新的User类

maven 和java基础不一样吗 maven project和java project的区别_web.xml_04

 

 

 



依赖)



<dependencies>
      <dependency>
           <groupId>com.b</groupId>  
           <artifactId>B</artifactId>
           <version>1.0</version>
      </dependency>
  </dependencies>



 

 

maven 和java基础不一样吗 maven project和java project的区别_java_05

 

 

继承

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

 

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

 

父工程要求:

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

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

 

新建cd两个工程:

maven 和java基础不一样吗 maven project和java project的区别_maven_06

 

 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>



 

maven 和java基础不一样吗 maven project和java project的区别_web.xml_07

 

 

 

聚合

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

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

 

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

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

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