Maven继承

继承为了消除重复,可以把pom 中很多相同的配置提取出来;如:grouptId, version 等。

在使用的时候子工程直接继承父工程的依赖版本号,子工程中不再需要指定具体版本号,方便统一管控项目的依赖版本问题。

创建一个父工程,

父工程的pom.xml

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 3     <modelVersion>4.0.0</modelVersion>
 4     <groupId>cn.sm1234</groupId>
 5     <artifactId>sm1234-parent</artifactId>
 6     <version>0.0.1-SNAPSHOT</version>
 7     <packaging>pom</packaging>
 8     <description>这是一个父工程,锁定版本</description>
 9 
10     <!-- 抽取相同的属性,如版本号,集中定义版本依赖号 -->
11     <properties>
12         <!-- 名称需要自定义 -->
13         <servlet.version>2.5</servlet.version>
14         <spring.version>5.1.3.RELEASE</spring.version>
15     </properties>
16 
17     <!-- 抽取子工程的依赖配置 -->
18     <!-- 版本锁定,当子工程有需要并且自行添加了具体依赖后才有效 -->
19     <dependencyManagement>
20         <dependencies>
21             <!-- 依赖servlet的api -->
22             <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
23             <dependency>
24                 <groupId>javax.servlet</groupId>
25                 <artifactId>servlet-api</artifactId>
26                 <version>${servlet.version}</version>
27                 <!-- privided依赖范围,编译时有效,但是运行发布的时候是无效的。 -->
28                 <scope>provided</scope>
29             </dependency>
30 
31             <!-- 依赖spring框架 -->
32             <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
33             <dependency>
34                 <groupId>org.springframework</groupId>
35                 <artifactId>spring-beans</artifactId>
36                 <version>${spring.version}</version>
37             </dependency>
38 
39             <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
40             <dependency>
41                 <groupId>org.springframework</groupId>
42                 <artifactId>spring-aop</artifactId>
43                 <version>${spring.version}</version>
44             </dependency>
45 
46             <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
47             <dependency>
48                 <groupId>org.springframework</groupId>
49                 <artifactId>spring-aspects</artifactId>
50                 <version>${spring.version}</version>
51             </dependency>
52 
53         </dependencies>
54     </dependencyManagement>
55 
56 
57 </project>

子工程的pom.xml

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 3 
 4     <!-- 引用父工程 -->
 5     <parent>
 6         <groupId>cn.sm1234</groupId>
 7         <artifactId>sm1234-parent</artifactId>
 8         <version>0.0.1-SNAPSHOT</version>
 9         <!-- 父项目的pom.xml文件的相对路径,一般可不指定 -->
10         <!-- <relativePath>../parent</relativePath> -->
11     </parent>
12 
13     <modelVersion>4.0.0</modelVersion>
14     <artifactId>sm1234-web</artifactId>
15     <packaging>war</packaging>
16 
17     <dependencies>
18         <dependency>
19             <groupId>javax.servlet</groupId>
20             <artifactId>servlet-api</artifactId>
21             <!-- 继承父工程后,版本号由父工程里面统一指定,不再需要特别指定 -->
22             <!-- <version>${servlet.version}</version> -->
23             <!-- privided依赖范围,编译时有效,但是运行发布的时候是无效的。 -->
24             <scope>provided</scope>
25         </dependency>
26 
27         <!-- 依赖spring框架 -->
28         <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
29         <dependency>
30             <groupId>org.springframework</groupId>
31             <artifactId>spring-beans</artifactId>
32         </dependency>
33 
34         <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
35         <dependency>
36             <groupId>org.springframework</groupId>
37             <artifactId>spring-aop</artifactId>
38         </dependency>
39 
40         <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
41         <dependency>
42             <groupId>org.springframework</groupId>
43             <artifactId>spring-aspects</artifactId>
44         </dependency>
45     </dependencies>
46 
47     <!-- JDK编译插件,改变JDK编译环境 -->
48     <build>
49         <plugins>
50             <!-- 1.java编译插件 -->
51             <plugin>
52                 <groupId>org.apache.maven.plugins</groupId>
53                 <artifactId>maven-compiler-plugin</artifactId>
54                 <version>3.6.1</version>
55                 <configuration>
56                     <source>1.8</source>
57                     <target>1.8</target>
58                     <encoding>UTF-8</encoding>
59                 </configuration>
60             </plugin>
61 
62             <!-- 2.配置打包项目源码包的插件 -->
63             <plugin>
64                 <groupId>org.apache.maven.plugins</groupId>
65                 <artifactId>maven-source-plugin</artifactId>
66                 <version>2.2.1</version>
67                 <!-- 完成绑定.执行完打包后执行 -->
68                 <executions>
69                     <execution>
70                         <goals>
71                             <goal>jar-no-fork</goal>
72                         </goals>
73                         <phase>verify</phase>
74                     </execution>
75                 </executions>
76             </plugin>
77 
78             <!-- 3.tomcat7插件 -->
79             <plugin>
80                 <groupId>org.apache.tomcat.maven</groupId>
81                 <artifactId>tomcat7-maven-plugin</artifactId>
82                 <version>2.2</version>
83                 <configuration>
84                     <port>8080</port>
85                     <server>tomcat7</server>
86                 </configuration>
87             </plugin>
88         </plugins>
89     </build>
90 </project>

说明:在子工程中引入父工程的内容时,会有重复内容,会有黄色感叹号提示,我们只需将子工程的重复内容删除即可。

注意:

relativePath:父项目的 pom.xml 文件的相对路径。默认值为../pom.xml。maven首先从当前构建项目开始查找父项目的 pom 文件,然后从本地仓库,最后从远程仓库。RelativePath 允许你选择一个不同的位置;一般Eclipse 找不到 parent 项目时可以先update project,还不行则可配置此项。
如果所有子工程都需要依赖某些包,父工程可以通过设置依赖,将依赖关系传递到子工程中。
<dependencies>
//添加公共依赖包
</dependencies>

【注意】dependencyManagement 与 dependencies 的区别

转载于:https://www.cnblogs.com/116970u/p/10137968.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STL中vectortype的复制

STL vector的复制 #include <iostream> #include <vector> using namespace std; int main() { vector<unsigned int> v1, v2; v1.push_back(11); v1.push_back(44); v2 v1; cout << v2[1] <<…

FLEXAIR 界面展示。

http://www.scalenine.com/showcase.php 希望自己做的AIR程序更漂亮&#xff0c;有更好的体验么&#xff1f;请参考。 转载于:https://www.cnblogs.com/xxcainiao/archive/2008/04/27/1173520.html

C++中关于cons和字符串t的一些注意事项

1&#xff0c;关于const的一些基本概念 const char * p1;//p1指向的内容不可变 char const * p2;//p2指向的内容不可变 char * const p3;//p3不可变&#xff0c;但其指向的内容可变 2&#xff0c;字符串的函数返回值不能再函数体里面声明创建&#xff0c;最好是函数传参进去&am…

电子驱蚊器就是智商税

说下我的情况我家不能烧蚊香&#xff0c;因为我们领导说家里有小孩&#xff0c;蚊香对小孩很不好&#xff0c;这是楠哥的锅&#xff0c;我不背。但是我又不喜欢挂蚊帐&#xff0c;总觉得蚊帐挂起来后觉得很压抑&#xff0c;黑乎乎的感觉。所以能不挂的时候就不挂&#xff0c;然…

RabbitMQ常用命令

1.查询服务状态rabbitmqctl status 2 列举虚拟主机列表rabbitmqctl list_vhosts 3 列举用户列表rabbitmqctl list_users 4 添加用户和密码rabbitmqctl add_user myadmin 123 5 设置权限 rabbitmqctl set_permissions myadmin ".*" ".*" ".*" 6 …

STL中empty()函数的误用

今日在一个项目上排查问题时&#xff0c;找到一个关于empty()函数误写为empty&#xff0c;导致出现了错误 #include <iostream> #include <string> using namespace std; int main() { string s "abc"; if(s.empty) { …

串口通讯到底有没有累积误差及对时钟精度的要求

1. 问题背景&#xff1a;2. 问题分析:3. 总结:1. 问题背景&#xff1a; 对于嵌入式开发者来说&#xff0c;串口应该是应用最广泛的模块&#xff0c;在日常客户支持过程中经常会有客户问到一些关于串口通讯稳定性的问题&#xff0c;比较典型的几个问题如下&#xff1a;在9600波特…

微软中国职位[北京工作]

前两天HR给的最新职位需求&#xff0c;园子里有兴趣的朋友可以Mail给我。 E: v-petezmicrosoft.com Position Overview: Are you ready to deliver world class IT solutions for the best legal department in the world? Microsoft Legal & Corporate Affairs IT (L…

oracle中的merge into用法解析

oracle中的merge into用法解析merge into的形式MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] and [...]...)WHEN MATCHED THEN[UPDATE sql]WHEN NOT MATCHED THEN[INSERT sql]作用&#xff1a;判断B表和A表是否满足on条件&#xff0c;…

《统一沟通-微软-实战》-3-部署-Exchange 2010-1-先决条件

参照: http://technet.microsoft.com/zh-CN/library/bb691354.aspx 先决条件 加域请确保林的功能级别至少为 Windows Server 2003&#xff0c;并确保架构主机运行 Windows Server 2003 Service Pack 1 或更高版本。有关 Windows 功能级别的详细信息&#xff0c;请参阅管理域和林…

写给打工人的职业发展观

转发火哥的一篇文章为什么要去一线城市打工现在网上很多这样的话题&#xff1a;深圳的高房价会导致人才流失吗&#xff1f;年轻人是不是在逃离北上广&#xff1f;一线城市工资是老家省会的一倍&#xff0c;消费&#xff0c;房租也比老家省会贵一倍&#xff0c;赚多少花多少&…

C++中string.find()的误用

下面的结果是什么&#xff1f; #include <iostream> #include <string> using namespace std; int main() { string s "abc"; if(s.find("x")) { cout << "yes" << endl; …

在线MSN代码(如同QQ在线咨询那种的)

在你需要显示MSN咨询的地方添加如下代码&#xff1a; <!--Msn网页在线代码开始--><a href"msnim:chat?contactabcdwxc21com.com"><img height"40"alt"msn:abcdwxc21com.com"src"msn.GIF"width"26"align&quo…

学习批处理之安装一键装机必备软件

经常装机需要装一些常备软件&#xff0c;麻烦而又无聊&#xff0c;就写个批处理&#xff0c;权当练练手。环境是批处理和常备软件包在一个文件内&#xff0c;直接copy文件夹到客户机&#xff0c;点击批处理执行即可。缺陷是常备软件非绿化版&#xff0c;启动安装时还得点“下一…

结构化操作语义

结构化操作语义 50年代是计算机语言兴起的年代&#xff0c;这一阶段的早期&#xff0c;计算机语言的设计往往要强调其"方便"的一面&#xff0c;而比较忽略其"严格"的一面&#xff0c;因而对语言的语义&#xff0c;甚至语法&#xff0c;未下严格的定义&…

RISC-V Linux 启动流程分析

“Author: 通天塔 985400330qq.comDate: 2022/05/15Revisor: lzufalcon falcontinylab.orgProject: RISC-V Linux 内核剖析”说明&#xff1a;RISC-V Linux 内核兴趣小组旨在围绕 RISC-V 处理器架构系统地研究 Linux 内核以及上下栈中的技术&#xff0c;为国内 RISC-V 生态…

两个栈来实现一个队列的C++代码

转载&#xff1a;http://blog.csdn.net/stpeace/article/details/46765343 利用两个栈来实现一个队列&#xff0c; 这个问题很常见。 最关键的是要有好的思路&#xff0c; 至于实现&#xff0c; 那是很简单的事情了。 在本文中&#xff0c; 也想说说自己的思路&#xff0c; 但…

解读设计模式----单例模式(Singleton Pattern)

单例模式可以保证一个类有且只有一个实例,并提供一个访问它的全局访问点.在程序设计中,有很多情况需要确保一个类只能有一个实例.从这句话可以看出,Singleton模式的核心&#xff1a;如何控制用户使用new对一个类的实例构造器的任意调用。如何绕过常规的构造器&#xff0c;提供一…

网站开发的小知识参考(慢慢收集备用)

inetinfo.exe占用80端口的解决方法 我在本机配置PHP环境时&#xff0c;安装的时候遇到80端口被占用&#xff0c;经过查询才知道&#xff0c;原来是Inetinfo.exe占用了80端口&#xff0c;于是把Inetinfo.exe服务关掉就可以正常安装PHP环境了。解决方法在windows服务管理里&#…

Linux下如何搭建Java环境

软件环境 虚拟机&#xff1a;VMware Workstation系统&#xff1a;Linux&#xff1a;CentOS-7-x86_64工具&#xff1a; 安装工具&#xff1a;SSH客户端搭建步骤 1&#xff1a;查询当前系统版本 cat /proc/version2&#xff1a;首先确认当前系统是否已经存在java环境 java -vers…