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 无要求
来源: http://www.bubuko.com/infodetail-3191918.html