如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目

作者:神秘网友 发布时间:2020-10-31 18:26:17

如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目

如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目

如何使用 IDEA 构建父/子工程类型的Maven项目


在一家公司里开发,很多项目中使用的jar包80%都是重复的,如果每个项目都要把pom.xml文件的这些依赖包复制过来,或是后期出现统一的版本升级,那修改起来是很麻烦的。

这里可以使用maven的继承特性来消除重复依赖,可以把很多相同的配置提取出来。例如:grouptId,version等


  • 父工程的打包类型必须是POM

1、打开IDEA,选择New Project

如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目

2、选择Maven选项,构建一个maven项目

  • 左侧选择Maven,勾选右侧Create from archetype选项,选择下面区域中的 maven-archetype-site-simple 类型

如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目

注意这类项目和原来项目的区别在于,打包方式是pom

<groupId>com.kkb</groupId> 
<artifactId>father</artifactId> 
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

3、创建项目名称,选择项目路径

可自定义GroupId,ArtifactId的值

如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目

4、在 Maven home directory 中选择自己下载的Maven

有时我们会发现 IDEA 在每次新建项目时 maven home directory 总是会变回默认的Maven。我们可以修改Maven仓库全局配置解决。

参考地址:https://blog.csdn.net/LK_Lawliet/article/details/108444328

如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目

由于pom项目一般都是用来做父项目的,所以该项目的src文件夹可以删除掉。

5、父工程创建完毕

如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目
? 存在问题

在创建完父工程后,pom.xml文件中的 maven-project-info-reports-plugin 插件会飘红

如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目

原因maven-project-info-reports-plugin 缺少依赖,我们可以在pom.xml中添加父依赖

解决如下:

如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目


创建方式有两种:

  • 一种是创建新工程为子工程,在创建时设置父工程的GAV

  • 一种是修改原有的工程为子工程,在子工程的pom.xml文件中手动添加父工程的GAV

1、右击项目,选择 New -> Module

如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目

选择要创建的子项目类型(默认为Java类型)

如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目

此时只需要添加子项目名称即可,然后一直下一步

如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目

2、子工程创建完毕

如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目


在开发中依赖的jar包众多,对应的版本也是很杂乱,那有没有一种方式可以统一管理这么jar包的版本值呢?当然 是有的,Maven使用dependencyManagement来管理依赖的版本号。

注意:此处只是定义依赖jar包的版本号,并不实际依赖。如果子工程中需要依赖jar包还需要添加dependency节点。

< dependencies > 中的jar直接加到项目中,管理的是依赖关系(如果有父pom,子pom,则子pom中只能被动接受父类的版本);

< dependencyManagement > 主要管理版本,对于子类继承同一个父类是很有用的,集中管理依赖版本不添加依赖关系,对于其中定义的版本,子pom不一定要继承父pom所定义的版本。

父工程:声明版本

<dependencyManagement> 
	<dependencies> 
		<dependency> 
			<groupId>com.kkb</groupId> 
			<artifactId>demo2</artifactId>
			<version>1.0-SNAPSHOT</version>
		</dependency> 
	</dependencies>
</dependencyManagement>

子工程:不需要指定版本号(继承父元素)

<parent> 
	<groupId>com.kkb</groupId> 
	<artifactId>father</artifactId> 
	<version>1.0-SNAPSHOT</version>
</parent>

<dependencies> 
	<dependency> 
		<groupId>com.kkb</groupId> 
		<artifactId>demo2</artifactId> <!--这里不需要指定版本-->
	</dependency>
</dependencies>

父工程中版本号提取

当父工程中定义的jar包越来越多,找起来越来越麻烦,所以可以把版本号提取成一个属性集中管理。

<properties> 
	<log4j.version>1.2.9</log4j.version>
</properties>

注意:这里的log4j.version的值是自定义的,但命名时不要使用中文或特殊字符等,标签对中间写版本值

使用:${log4j.version}读取该变量值,代码如下

<dependencies> 
	<dependency> 
		<groupId>junit</groupId> 
		<artifactId>junit</artifactId> 
		<version>${log4j.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

子工程的jar包版本不受影响

如何使用 IntelliJ IDEA 构建父/子工程类型的Maven项目相关教程

  1. unity3D 编辑器扩展,GUISkin/GUIStyle的简单使用

    unity3D 编辑器扩展,GUISkin/GUIStyle的简单使用 GUISkin是基本所有样式的集合,可以作为一种配置资源。如果开发者需要自定义大量的GUIStyle,可以通过GUISkin配置资源来定义,并且开发者可以在Inspector面板中直接修改样式。 Unity 中的GUI Skin 在Unity中

  2. 使用Swagger2时启动日志中出现大面积的日志内容:Generating uni

    使用Swagger2时启动日志中出现大面积的日志内容:Generating unique operation named: xxx 在项目中使用Swagger2生成在线文档时,在项目的启动的日志中出现了大面积的 Generating unique operation named: xxx 日志信息,看的很是不爽 出现这种日志的情况是因

  3. Android获取App内存使用情况

    Android获取App内存使用情况 1.代码获取当前app内存的使用情况 ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); //最大分配内存 int memory = activityManager.getMemoryClass(); System.out.println(memory: +mem

  4. 2020.10.29课堂笔记(使用Scala连接MySQL)

    2020.10.29课堂笔记(使用Scala连接MySQL) 添加MySQL连接驱动到项目中,这里选择的是mysql-connector-java-5.1.432 步骤示范: 在Libiaries中添加MySQL的驱动jar包 然后写jdbc程序连接数据库: 代码如下: import java.sql.{Connection, DriverManager, Result

  5. CocosCreater RichText的使用(点击事件处理)

    CocosCreater RichText的使用(点击事件处理) RichText 使用说明详细官方文档:https://docs.cocos.com/creator/manual/zh/components/richtext.html?h=richtext RichText组件用来显示一段带有不同样式效果的文字,你可以通过一些简单的 BBCode 标签来设置文

  6. Idea中Springboot项目使用JUnit4进行单元测试的方式

    Idea中Springboot项目使用JUnit4进行单元测试的方式 依赖注入不可少: dependency groupIdjunit/groupId artifactIdjunit/artifactId scopetest/scope/dependency 1、在业务代码中完成编码操作,如完成service编码实现: /** * 根据审批流程ID获取工服管理数

  7. vue-baidu-map使用方法(简单快速)在vue项目中使用

    vue-baidu-map使用方法(简单快速)在vue项目中使用 需求: 浏览器中显示百度地图一个坐标。 效果展示: 1.安装 vue-baidu-map 官网地址(https://dafrok.github.io/vue-baidu-map/#/zh/start/installation) npm install vue-baidu-map --save 2.在main.js中

  8. androidx 使用 Butter Knife

    androidx 使用 Butter Knife androidx 使用 Butter Knife 第一部:安装插件 第二部:在build.gradle(Project: ) 下面展示一些 内联代码片 。 buildscript { repositories { mavenCentral() google() } dependencies { classpath 'com.jakewharton:butterknife