Maven学习笔记(四)-----生命周期|POM常用元素介绍
来源:互联网 发布:一个简单的php程序 编辑:程序博客网 时间:2024/06/16 09:37
clean清理项目
- pre-clean:执行清理前的工作
- clean:清理上一次构建生成的所有文件
- post-clean:执行清理后的文件
default构建项目(最核心)
- compile
- test
- package
- install
#site生成项目站点- pre-site:在生成项目站点前要完成的工作
- site:生成项目的站点文档
- post-site:在生成项目站点后要完成的工作
- site-deploy:发布生成的站点到服务器上
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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>反写的公司网址+项目名</groupId> <artifactId>项目名+模块名</artifactId> <!-- 第一个0 表示大版本号 第二个0 表示分支版本号 第三个0 表示小版本号 0.0.1 snapshot快照 alpha内部测试 beta公测 Release稳定 GA正式发布 --> <version>项目的版本</version> <!--打包方式,不指定默认是jar war zip pom --> <packaging></packaging> <!--项目描述名--> <name></name> <!-- 项目地址--> <url></url> <!--项目描述--> <description></description> <!--开发人员--> <developers></developers> <!--许可信息--> <licenses></licenses> <!--组织--> <organization></organization> <dependencies> <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> <type></type> <!--依赖范围--> <scope></scope> <!--true|false,设置依赖是否可选,默认false.子项目默认 继承,true必须显式地引入该依赖--> <optional></optional> <!--排除依赖传递列表--> <exclusions> <exclusion> </exclusion> </exclusions> </dependency> </dependencies> <!--依赖管理--> <dependencyManagement> <dependencies> <dependency> </dependency> </dependencies> </dependencyManagement> <build> <!--插件列表--> <plugins> <plugin> <groupId></groupId> <artifactId></artifactId> <version></version> </plugin> </plugins> </build> <!--继承--> <parent></parent> <!--指定多个模块,一起编译--> <modules> <module></module> </modules></project>
scope
- compile:默认的范围,编译测试运行都有效
- provided:在编译和测试时有效
- runtime:在测试和运行时有效
- test:只在测试时有效
- system:编译和测试时有效(与本机系统相关联,可移植性差)
- import:导入的范围,它只是用在dependencyManagment中,表示从其他的pom中导入dependecy的配置
import例子代码:
<project> <modelVersion>4.0.0</modelVersion> <groupId>maven</groupId> <artifactId>B</artifactId> <packaging>pom</packaging> <name>B</name> <version>1.0</version> <dependencyManagement> <dependencies> <dependency> <groupId>maven</groupId> <artifactId>A</artifactId> <version>1.0</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>test</groupId> <artifactId>d</artifactId> <version>1.0</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>test</groupId> <artifactId>a</artifactId> <version>1.0</version> <scope>runtime</scope> </dependency> <dependency> <groupId>test</groupId> <artifactId>c</artifactId> <scope>runtime</scope> </dependency> </dependencies></project>
说明:所有A的管理依赖项将被并入B,除了d,因为它在这个pom中定义。
依赖传递
共三个工程A、B、C。
1)A打包入库,B依赖A;
2)B打包入库,C依赖B;
3)查看C工程的Maven Dependencies,发现C依赖了工程A。若不需要依赖A,则在C工程目录的POM文件中的依赖B项下面添加如下代码:
<dependency> <groupId>B的工程id</groupId> <artifactId>B的模块id</artifactId> <version>B的版本</version> <exclusions> <exclusion> <groupId>A的工程id</groupId> <artifactId>A的模块id</artifactId> <!--注意此处不需要添加A的version--> </exclusion> </exclusions> </dependency>
依赖冲突
两条原则:
1. 短路优先
(1)A->B->C->X(jar)
(2)A->D->X(jar)
A工程优先依赖(2)。
2. 先声明优先使用
如果路径长度相同,则谁先声明,先解析谁。
聚合和继承
聚合
使用标签。
<modules> <module>../bge</module> <module>../nage</module> <module>../shanji</module></modules>
继承
父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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>shen.one</groupId> <artifactId>parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>parent</name> <url>http://maven.apache.org</url> <properties> <junit.version>3.8.1</junit.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!--父POM将依赖关系加入到Manangement中去,父POM不做代码编写--> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement></project>
子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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>shen.one</groupId> <artifactId>bge</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>bge</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties><!--继承的代码如下--> <parent> <groupId>shen.one</groupId> <artifactId>parent</artifactId> <version>0.0.1-SNAPSHOT</version> <!--特别注意: 需要填写父POM路径--> <relativePath>../parent/pom.xml</relativePath> </parent><!--继承的代码如上--> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency> </dependencies></project>
阅读全文
0 0
- Maven学习笔记(四)-----生命周期|POM常用元素介绍
- Maven POM学习笔记之<Project>元素
- pom.xml常用元素介绍
- pom.xml常用元素介绍
- Maven学习笔记之四:Maven使用入门(编写POM)
- maven学习笔记(三)pom文件
- maven的pom介绍及配置(四)
- maven的pom介绍及配置(四)
- maven生命周期(lifecycle)—— maven权威指南学习笔记(四)
- HTML学习笔记(四)_HTML5常用元素与属性
- Maven学习(四)-- 生命周期和插件
- Maven学习总结(四)——pom.xml
- maven(4)------maven核心pom.xml文件常用元素分析
- maven(4)------maven核心pom.xml文件常用元素分析
- (四)maven生命周期
- Maven学习(四):生命周期与maven插件
- Maven 学习笔记(2)pom.xml配置详解
- Maven学习笔记第二节(pom文件)
- SCAN扫描算法
- 第三周项目一 顺序表的基本运算
- java作用域
- 设计模式_ 代理模式(11)
- 9月第二周
- Maven学习笔记(四)-----生命周期|POM常用元素介绍
- hihoCoder1403(后缀数组 + 二分)
- Codeforces 758C- Unfair Poll
- 微信公众号开发(十二)OAuth2.0网页授权
- 顺序表Test1
- linux fork创建子进程
- 红烧肉(HSR)挖矿教程
- 【C/C++开发】容器set和multiset,C++11对vector成员函数的扩展(cbegin()、cend()、crbegin()、crend()、emplace()、data())
- OpenJudge百炼-2747-数字方格-C语言-枚举