maven pom编写
来源:互联网 发布:php如何检测usbkey 编辑:程序博客网 时间:2024/06/11 20:14
1.<parent>
Maven提供了继承的机制来管理这些共同的依赖。你可以编写一个pom.xml文件作为父级pom配置,各个模块在自己的pom.xml中继承父级pom文件,就像上面的示例那样,使用<parent>元素标识继承的父级pom文件。1.1父模块pom文件的编写:
1、父级pom文件的packaging必须是pom,它需要作为pom文件发布以便子pom继承。2、在父级pom可以使用<dependencyManagement>配置依赖管理。在<dependencyManagement>下的依赖声明不会引入实际依赖,但是可以让子模块继承依赖配置。
3、在父级pom中可以使用<pluginManagement>配置插件管理。作用和<dependencyManagement>类似,只不过一个管理依赖一个管理插件。
1.2子模块pom文件的编写:
1、需要使用<parent>元素标识继承的父pom。可以使用<relativePath>标识父级pom的物理路径,子模块会直接从指定的路径加载父级pom文件,未指定该元素时,子模块将根据父级pom的坐标从Maven仓库查找。2、子模块pom可以继承父级pom中除artifactId之外的大部分配置,因此子模块的groupId、version以及依赖的version都可以省略。
3、子模块pom中的<dependency>可以只写groupId与artifactId,不再写版本号。
例:
<!--父级pom--><dependencyManagement><dependencies><dependency><groupId>org.glassfish.jersey.containers</groupId><artifactId>jersey-container-servlet</artifactId><version>2.5</version></dependency><dependency><groupId>org.glassfish.jersey.media</groupId><artifactId>jersey-media-json-jackson</artifactId><version>2.5</version></dependency></dependencies></dependencyManagement><modules><module>../GraduationProjectCollect</module><module>../GraduationProjectTrain</module><module>../GraduationProjectUse</module></modules>
(分割行)
<!--子级pom,不需要写<groupId>,<version>与<dependency>中的<version>--><parent><groupId>com.likeyichu</groupId><artifactId>GraduationProjectAll</artifactId><version>1.0</version></parent><artifactId>GraduationProjectCollect</artifactId><packaging>war</packaging><name>GraduationProjectCollect</name><description>GraduationProjectCollect-数据收集部分</description><dependencies><dependency><groupId>org.glassfish.jersey.containers</groupId><artifactId>jersey-container-servlet</artifactId></dependency><dependency><groupId>org.glassfish.jersey.media</groupId><artifactId>jersey-media-json-jackson</artifactId></dependency><dependencies>
2.<dependency>
指定依赖
<!-- pom.xml的一部分 可以设置property,然后在后面引用。--><properties> <spring.version>4.0.4</spring.version></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency></dependencies>
3.<module>
一个项目由多个子项目组成时,可使用maven的module组织形式。
<!--总项目的pom文件打包形式必须为pom形式--> <packaging>pom</packaging> <!-- 在<modules>标签中配置<module>标签--> <modules> <module>../GraduationProjectCollect</module> <module>../GraduationProjectTrain</module> <module>../GraduationProjectUse</module> </modules>
4.<exclusion>
可用于解决多个依赖中的冲突。比如自己的项目依赖了A与B,A依赖了
eclipse中图形化查看依赖传递,见图1.
图1 可视化的maven依赖关系传递
从图中可以看出,简单的版本冲突构建时是没有多大问题的,会忽略高版本的jar。
<exclusion>标签通常用于<dependency>标签内部,一个例子见下:
<dependency><groupId>com.ctrip.framework.realtime</groupId><artifactId>muise-storm-core</artifactId><version>0.2</version><exclusions><exclusion><groupId>jdk.tools</groupId><artifactId>jdk.tools</artifactId></exclusion><exclusion><artifactId>log4j-over-slf4j</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions></dependency>
5.<build>
5.1 实现配置文件的变量替换
场景:不同环境的数据库连接串、用户名不一样,构建项目时希望能做到自动替换。
pom文件所在目录下有conf.properties文件,内容为:
userName=XiaoMing
在src/main/sources/目录下有db.properties文件,内容为:
user=${userName}
执行后,效果为
db.properties文件,内容为user=XiaoMing
相应的pom内容片断见下:
<build><filters> <!-- 是以该pom文件路径作为工作目录 --> <filter>conf.properties</filter> </filters> <!--指定资源文件位置--><resources><resource><directory>src/main/resources</directory><!--可以在此配置过滤文件 --><includes><include>*.xml</include><include>*.properties</include></includes><!--开启filtering功能 --><filtering>true</filtering></resource></resources><plugins><plugin><artifactId>maven-war-plugin</artifactId><configuration><version>2.5</version></configuration></plugin></plugins></build>
0 0
- maven pom编写
- Maven Pom文件的编写
- Maven实践(二)---编写POM文件
- Maven的多模块(Multi-Module)工程的pom编写
- maven3实战之maven使用入门(编写POM)
- maven实战(6)-- pom.xml的编写
- Maven的多模块(Multi-Module)工程的pom编写
- MAVEN系列之二@编写POM.xml和讲解
- maven POM
- Maven - POM
- Maven pom
- maven-pom
- Maven - POM
- Maven - POM
- Maven POM
- Maven pom
- maven pom
- maven pom
- 摘:MD231 gprs模块建立tcp或udp连接,AT命令详细参考
- linux内核分析——CFS调度器
- iOS:Button.titleLabel.text
- Unable to resolve target 'Google Inc.:Google APIs和Open the Java build path property page of project
- HDU 1789:Doing Homework again
- maven pom编写
- 装饰者设计模式
- KMP算法和KMP算法中next数组的讲解
- Android 开发优化 知识点
- adb 常用命令使用+adb 无线调试
- 读书笔记MoreEffectiveC++(21)
- UVA 514 Rails(栈)
- Tree's a Crowd
- linux内核__get_free_page,kmalloc,vmalloc的区别,内核对内存的管理