Maven父子聚合项目

父项目的pom:

<packaging>pom</packaging>

	<modules>
		<module>ihpl-evaluation-user-api</module>
		<module>ihpl-evaluation-user-impl</module>
		<module>ihpl-evaluation-psev-api</module>
		<module>ihpl-evaluation-psev-impl</module>
		<module>ihpl-evaluation-wechat-api</module>
		<module>ihpl-evaluation-wechat-impl</module>
		<module>ihpl-evaluation-webapp</module>
		<module>ihpl-evaluation-manager</module>
		<module>ihpl-evaluation-job</module>
	</modules>
	
	<properties>
		<revision>1.0.0-SNAPSHOT</revision>
		<framework.version>1.0.0-SNAPSHOT</framework.version>
		<mysql-connector-java.version>5.1.47</mysql-connector-java.version>
		<flatten-maven-plugin.version>1.1.0</flatten-maven-plugin.version>
	</properties>
<dependencyManagement>
			依赖框架,不依赖子项目
			<dependency>
				<groupId>com.clearofchina.ihpl</groupId>
				<artifactId>ihpl-framework</artifactId>
				<version>${framework.version}</version>
				**<type>pom</type>
				<scope>import</scope>**
			</dependency>
						<dependency>
				<groupId>mysql</groupId>
				<artifactId>mysql-connector-java</artifactId>
				<version>${mysql-connector-java.version}</version>
			</dependency>
</dependencyManagement>

子项目的pom:

	<parent>
		<groupId>com.clearofchina.ihpl</groupId>
		<artifactId>ihpl-evaluation</artifactId>
		<version>${revision}</version>
	</parent>
		依赖同等级的子项目,不依赖父项目,不依赖框架
		<dependency>
			<groupId>com.clearofchina.ihpl</groupId>
			<artifactId>ihpl-security</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

框架的父pom

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.6.RELEASE</version>
	</parent>
	<modules>
		<module>ihpl-core</module>
		<module>ihpl-user-api</module>
		<module>ihpl-security</module>
		<module>ihpl-security-sample</module>
		<module>ihpl-base-service</module>
		<module>ihpl-base-web</module>
		<module>ihpl-websocket</module>
	</modules>

	<properties>
		<revision>1.0.0-SNAPSHOT</revision>
		<commons-io.version>2.6</commons-io.version>
		<commons-beanutils.version>1.9.3</commons-beanutils.version>
		<commons-net.version>3.6</commons-net.version>
		<guava.version>23.6.1-jre</guava.version>
		<swagger.version>2.8.0</swagger.version>
		<dozer.version>5.5.1</dozer.version>
		<dubbo.version>2.7.3</dubbo.version>
		<dubbo-spring-boot-starter.version>2.7.1</dubbo-spring-boot-starter.version>
		<mybatis-spring.version>2.0.1</mybatis-spring.version>
		<mybatis-plus.version>3.1.2</mybatis-plus.version>
		<mysql-connector-java.version>5.1.47</mysql-connector-java.version>
		<gson.version>2.8.5</gson.version>
		<dom4j.version>1.6.1</dom4j.version>
		<thumbnailator.version>0.4.8</thumbnailator.version>
		<zxing.version>3.3.3</zxing.version>
		<poi.version>3.11</poi.version>

		<flatten-maven-plugin.version>1.1.0</flatten-maven-plugin.version>
	</properties>

	<repositories>
		<repository>
			<id>yiban</id>
			<url>http://nexus.clear-rdc.com/content/repositories/yiban/</url>
		</repository>
		<repository>
			<id>snapshots</id>
			<url>http://nexus.clear-rdc.com/content/repositories/snapshots/</url>
		</repository>
		<repository>
			<id>releases</id>
			<url>http://nexus.clear-rdc.com/content/repositories/releases/</url>
		</repository>
		<repository>
			<id>getui-nexus</id>
			<url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url>
		</repository>
	</repositories>

pom文件中维护了各模块之间的依赖和继承关系;
Maven项目的常用的打包类型分为:pom、jar、war等类型;
项目模块化可以将通用的部分抽离出来,方便重用;修改一部分代码不再是build整个项目,缩短了build时间;.

dependencies、dependencyManagement区别:
dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)

dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

一些坑:

1.关于部署,打包
Common(框架)打包出来的应该是不可执行的jar包,所以不要在Common的pom中定义spring-boot-maven-plugin插件,因为这个SpringBoot插件会在Maven的package后进行二次打包,目的为了生成可执行jar包
这里还有一个小坑,如果还是不能进行打包的话,那么就install一下root(父)项目,也就是总目录下的pom文件对应的install操作,这样再打包(子)front项目基本上就没有问题了,老铁,都是经验呀,希望对你们有帮助

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值