maven pom编写

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,不再写版本号。

例:

  1. <!-- 父级pom-->
  2. <dependencyManagement>
  3. <dependencies>
  4. <dependency>
  5. <groupId>org.glassfish.jersey.containers </groupId>
  6. <artifactId>jersey-container-servlet </artifactId>
  7. <version>2.5 </version>
  8. </dependency>
  9. <dependency>
  10. <groupId>org.glassfish.jersey.media </groupId>
  11. <artifactId>jersey-media-json-jackson </artifactId>
  12. <version>2.5 </version>
  13. </dependency>
  14. </dependencies>
  15. </dependencyManagement>
  16. <modules>
  17. <module>../GraduationProjectCollect </module>
  18. <module>../GraduationProjectTrain </module>
  19. <module>../GraduationProjectUse </module>
  20. </modules>

(分割行)

  1. <!--子级pom,不需要写<groupId>,<version>与<dependency>中的<version>-->
  2. <parent>
  3. <groupId>com.likeyichu </groupId>
  4. <artifactId>GraduationProjectAll </artifactId>
  5. <version>1.0 </version>
  6. </parent>
  7. <artifactId>GraduationProjectCollect </artifactId>
  8. <packaging>war </packaging>
  9. <name>GraduationProjectCollect </name>
  10. <description>GraduationProjectCollect-数据收集部分 </description>
  11. <dependencies>
  12. <dependency>
  13. <groupId>org.glassfish.jersey.containers </groupId>
  14. <artifactId>jersey-container-servlet </artifactId>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.glassfish.jersey.media </groupId>
  18. <artifactId>jersey-media-json-jackson </artifactId>
  19. </dependency>
  20. <dependencies>



2.<dependency>

指定依赖

  1. <!-- pom.xml的一部分 可以设置property,然后在后面引用。-->
  2. <properties>
  3. <spring.version>4.0.4 </spring.version>
  4. </properties>
  5. <dependencies>
  6. <dependency>
  7. <groupId>org.springframework </groupId>
  8. <artifactId>spring-core </artifactId>
  9. <version>${spring.version} </version>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework </groupId>
  13. <artifactId>spring-context </artifactId>
  14. <version>${spring.version} </version>
  15. </dependency>
  16. </dependencies>


3.<module>

一个项目由多个子项目组成时,可使用maven的module组织形式。
  1. <!--总项目的pom文件打包形式必须为pom形式-->
  2. <packaging>pom </packaging>
  3. <!-- 在<modules>标签中配置<module>标签-->
  4. <modules>
  5. <module>../GraduationProjectCollect </module>
  6. <module>../GraduationProjectTrain </module>
  7. <module>../GraduationProjectUse </module>
  8. </modules>

4.<exclusion>

可用于解决多个依赖中的冲突。比如自己的项目依赖了A与B,A依赖了

eclipse中图形化查看依赖传递,见图1.


图1  可视化的maven依赖关系传递

从图中可以看出,简单的版本冲突构建时是没有多大问题的,会忽略高版本的jar。

<exclusion>标签通常用于<dependency>标签内部,一个例子见下:

  1. <dependency>
  2. <groupId>com.ctrip.framework.realtime </groupId>
  3. <artifactId>muise-storm-core </artifactId>
  4. <version>0.2 </version>
  5. <exclusions>
  6. <exclusion>
  7. <groupId>jdk.tools </groupId>
  8. <artifactId>jdk.tools </artifactId>
  9. </exclusion>
  10. <exclusion>
  11. <artifactId>log4j-over-slf4j </artifactId>
  12. <groupId>org.slf4j </groupId>
  13. </exclusion>
  14. </exclusions>
  15. </dependency>


5.<build>

5.1 实现配置文件的变量替换

场景:不同环境的数据库连接串、用户名不一样,构建项目时希望能做到自动替换。

pom文件所在目录下有conf.properties文件,内容为:
userName=XiaoMing
在src/main/sources/目录下有db.properties文件,内容为:
user=${userName}
执行后,效果为
db.properties文件,内容为user=XiaoMing

相应的pom内容片断见下:

  1. <build>
  2. <filters>
  3. <!-- 是以该pom文件路径作为工作目录 -->
  4. <filter>conf.properties </filter>
  5. </filters>
  6. <!--指定资源文件位置-->
  7. <resources>
  8. <resource>
  9. <directory>src/main/resources </directory>
  10. <!--可以在此配置过滤文件 -->
  11. <includes>
  12. <include>*.xml </include>
  13. <include>*.properties </include>
  14. </includes>
  15. <!--开启filtering功能 -->
  16. <filtering>true </filtering>
  17. </resource>
  18. </resources>
  19. <plugins>
  20. <plugin>
  21. <artifactId>maven-war-plugin </artifactId>
  22. <configuration>
  23. <version>2.5 </version>
  24. </configuration>
  25. </plugin>
  26. </plugins>
  27. </build>

参考文献:https://blog.csdn.net/chuchus/article/details/47100795

https://www.cnblogs.com/hafiz/p/5360195.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值