一、建立一个maven工程 pom类型

  统一管理依赖以及版本号

  子工程不会使用所有的定义的依赖

  子工程使用依赖时无需指定版本号

其pom.xml:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.kexi.hmi.pictureeditor</groupId><artifactId>pictureeditor-core-environment</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><name>pictureeditor-core-environment</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><!-- 集中定义依赖版本号 --><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><junit.version>4.11</junit.version><slf4j.version>1.7.25</slf4j.version><logback.version>1.2.3</logback.version><logback.ext.spring.version>0.1.4</logback.ext.spring.version><log4j.version>2.4.1</log4j.version><fastjson.version>1.2.47</fastjson.version><jackson.version>2.9.2</jackson.version><httpclient.version>4.5.10</httpclient.version><jdom.version>1.0</jdom.version><spring.version>4.3.16.RELEASE</spring.version><lombok.version>1.18.6</lombok.version><jodatime.version>2.3</jodatime.version><curator.version>2.4.1</curator.version><disruptor.version>3.2.0</disruptor.version><mysql.version>5.1.38</mysql.version><quartz.version>2.3.0</quartz.version><activemq.client.version>5.15.10</activemq.client.version><aspectj.version>1.8.10</aspectj.version><jna.version>4.4.0</jna.version><commons.lang3.version>3.8</commons.lang3.version><aopalliance.version>1.0</aopalliance.version></properties><!-- 管理jar包,不会引入 ,如果子工程需要哪些jar包,则具体地在子工程中引入,不过不需要写版本号--><dependencyManagement><dependencies><!-- 单元测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><!-- log--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>${logback.version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>${logback.version}</version></dependency><dependency><groupId>org.logback-extensions</groupId><artifactId>logback-ext-spring</artifactId><version>${logback.ext.spring.version}</version></dependency><!--jackson--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version></dependency><!--fastjson--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><!--joda --><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>${jodatime.version}</version></dependency><!--httpclient --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>${httpclient.version}</version></dependency><!--jdom--><dependency><groupId>jdom</groupId><artifactId>jdom</artifactId><version>${jdom.version}</version></dependency><!--activemq--><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-client</artifactId><version>${activemq.client.version}</version></dependency><!--spring--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><!--spring aop--><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency><dependency><groupId>aopalliance</groupId><artifactId>aopalliance</artifactId><version>${aopalliance.version}</version></dependency><!--spring transactional--><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!--spring web RestTemplet Dependency--><!--        <dependency>--><!--            <groupId>org.springframework</groupId>--><!--            <artifactId>spring-web</artifactId>--><!--            <version>${spring.version}</version>--><!--        </dependency>--><!--aspectj--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>${aspectj.version}</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>${aspectj.version}</version></dependency><!--tool--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>${jna.version}</version></dependency><dependency><groupId>net.java.dev.jna</groupId><artifactId>jna-platform</artifactId><version>${jna.version}</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>${commons.lang3.version}</version></dependency></dependencies></dependencyManagement><build><pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-jar-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin><!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle --><plugin><artifactId>maven-site-plugin</artifactId><version>3.7.1</version></plugin><plugin><artifactId>maven-project-info-reports-plugin</artifactId><version>3.0.0</version></plugin></plugins></pluginManagement></build><distributionManagement><repository><!--id的名字可以任意取,但是在setting文件中的属性<server>的ID与这里一致--><id>releases</id><!--指向仓库类型为host(宿主仓库)的储存类型为Release的仓库--><url>http://10.20.30.158:8081/repository/maven-releases/</url></repository><snapshotRepository><id>snapshots</id><!--指向仓库类型为host(宿主仓库)的储存类型为Snapshot的仓库--><url>http://10.20.30.158:8081/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>
</project>

二、将父工程install到本地或者deploy到maven私服

三、新创建一个maven工程,在pom.xml中,继承父工程,依赖去掉版本号

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.kexi.hmi.pictureeditor</groupId><artifactId>pictureeditor-core-environment</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.kexi.hmi.pictureeditor</groupId><artifactId>pictureeditor-core-gdiclient</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>gdiclient</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><slf4j.version>1.7.25</slf4j.version><logback.version>1.2.3</logback.version><fastjson.version>1.2.41</fastjson.version><jackson.version>2.9.2</jackson.version><httpclient.version>4.5.10</httpclient.version><jdom.version>1.0</jdom.version><spring.version>4.3.16.RELEASE</spring.version><lombok.version>1.18.6</lombok.version><jodatime.version>2.3</jodatime.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><!-- logback start --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId></dependency><dependency><groupId>org.logback-extensions</groupId><artifactId>logback-ext-spring</artifactId></dependency><!--log桥接工具--><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId></dependency><!-- logback end --><!--fastjson start--><!--    <dependency>--><!--      <groupId>com.alibaba</groupId>--><!--      <artifactId>fastjson</artifactId>--><!--      <version>${fastjson.version}</version>--><!--    </dependency>--><!--fastjson end--><!--jackson start--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency><!--jackson end--><!--fastjson start--><!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency><!--fastjson end--><!--joda start--><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId></dependency><!--joda end--><!--httpclient start--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId></dependency><!--httpclient end--><!--jdom start--><dependency><groupId>jdom</groupId><artifactId>jdom</artifactId></dependency><!--jdom end--><!--spring core start--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId></dependency><!--spring core end--><!--spring aop start--><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId></dependency><dependency><groupId>aopalliance</groupId><artifactId>aopalliance</artifactId></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId></dependency><!--spring aop end--><!--spring transactional start--><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId></dependency><!--spring transactional end--><!--spring web RestTemplet Dependency start--><!--        <dependency>--><!--            <groupId>org.springframework</groupId>--><!--            <artifactId>spring-web</artifactId>--><!--            <version>${spring.version}</version>--><!--        </dependency>--><!--spring web RestTemplet Dependency end--><!--tool start--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId></dependency><dependency><groupId>net.java.dev.jna</groupId><artifactId>jna-platform</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></dependency><!--tool end--><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-client</artifactId></dependency></dependencies><build><defaultGoal>compile</defaultGoal><resources><resource><directory>src/main/resources</directory><includes><include>**/*</include></includes><excludes><exclude>**/.svn/*</exclude></excludes><filtering>false</filtering></resource></resources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>2.5.5</version><configuration><archive><manifest><mainClass>com.kexi.hmi.pictureeditor.core.gdiclient.GDIExample</mainClass></manifest></archive><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><!-- 以下是将项目依赖打到一个包里--><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><version>3.0.1</version><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>target/lib</outputDirectory><overWriteSnapshots>true</overWriteSnapshots></configuration></execution></executions></plugin></plugins></build><!--上传到nexus仓库中,配合mvn deploy:deploy--><!--    <distributionManagement>--><!--        <repository>--><!--            <id>nexus</id>--><!--            <name>Nexus snapshots Repository</name>--><!--            &lt;!&ndash;snapshots仓库 &ndash;&gt;--><!--            <url>http://127.0.0.1:8081/repository/maven-snapshots/</url>--><!--        </repository>--><!--    </distributionManagement>--><!--    <distributionManagement>--><!--        <snapshotRepository>--><!--            <id>maven-snapshots</id>--><!--            <name>User Porject Snapshot</name>--><!--            <url>http://127.0.0.1:8081/repository/maven-snapshots/</url>--><!--            <uniqueVersion>true</uniqueVersion>--><!--        </snapshotRepository>--><!--        <repository>--><!--            <id>maven-releases</id>--><!--            <name>User Porject Release</name>--><!--            <url>http://127.0.0.1:8081/repository/maven-releases/</url>--><!--        </repository>--><!--    </distributionManagement>--><distributionManagement><repository><!--id的名字可以任意取,但是在setting文件中的属性<server>的ID与这里一致--><id>releases</id><!--指向仓库类型为host(宿主仓库)的储存类型为Release的仓库--><url>http://10.20.30.158:8081/repository/maven-releases/</url></repository><snapshotRepository><id>snapshots</id><!--指向仓库类型为host(宿主仓库)的储存类型为Snapshot的仓库--><url>http://10.20.30.158:8081/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>
</project>

四、常见问题

1、编译子工程时提示【maven的pom文件报错: must be "pom" but is "jar"】

其中关键句子是:Invalid packaging for parent POM bo.zhao:myutil:1.0-SNAPSHOT (E:\IDEA\myutil\pom.xml), must be "pom" but is "jar"

解决办法:
parent工程的pom.xml文件的project节点下没有设置packagin类型为pom:
<packaging>pom</packaging>
最后更新maven即可。(父工程重新install或者deploy,之后在子工程中右键pom.xml文件reimport(idea))

创建maven父工程统一管理版本号相关推荐

  1. IDEA 创建 MAVEN 父子工程

    IDEA 创建 MAVEN 父子工程 1.参考资料 IDEA 创建MAVEN父子项目 使用IDEA创建maven父子工程 使用IDEA创建maven父子工程项目 2.创建 Maven 父工程 选择新建 ...

  2. Maven父工程(统一管理依赖)

      之前一段时间,我和在其他公司工作的同行朋友聊天时无意间聊到项目依赖问题,发现很多公司(包括我们公司)都是有自己一个统一的父工程,而这个工程没有任何的逻辑代码,说起来只有一个pom.xml文件,而这 ...

  3. Android Studio中统一管理版本号引用配置

    转载注明gao_chun的Blog:http://blog.csdn.net/gao_chun/article/details/58105089 Gradle统一管理版本号引用配置 为了提高项目开发效 ...

  4. SpringCloud工程搭建之创建SpringCloud父工程

    一.创建SpringCloud父工程 完整工程源码:https://gitee.com/forwardxiang/spring-cloud-demo.git 1.1.1 IDEA相关操作 1.1.2 ...

  5. maven项目统一管理版本号方案

    共有两种方案: 第一种亲测,靠谱. 方法一.引用版本管理插件 项目的结果如图: 模拟其他微服务目录一致的test2项目 两个项目的pom文件依赖关系: test1的parent.pom继承test1最 ...

  6. SpringCloud创建项目父工程

    1.说明 本文详解介绍Spring Cloud项目的父工程创建, 由于Spring Cloud项目下有很多模块组件, 需要先创建一个大的父工程项目, 然后在下面创建各个子工程模块. 2.创建父工程 这 ...

  7. IDEA如何配置Maven及版本统一管理

    1.Maven安装 前往官网下载:https://maven.apache.org/download.cgi 将文件解压自行存放,并在刚刚下载的maven存放目录下新建文件夹: maven-repos ...

  8. ecplise SpringCould搭建过程---创建SpringCould父工程

    1.创建maven项目 2. 3. 点击finish 项目创建完成,这个是一个父工程, 工程中目录: Springcould |_____src |_____site |____pom.xml 其他的 ...

  9. 使用IDEA创建springcloud父工程

    文章目录 new Project 指定groupId和artifactid 指定project的名称为位置 父工程不需要src目录, 可进行删除 pom.xml 开发环境 idea版本 : 2018. ...

最新文章

  1. 【Python】青少年蓝桥杯_每日一题_3.11_体重指数
  2. mysql basedal_spring与MyBatis结合
  3. django restful 请求_Django编写RESTful API(二):请求和响应
  4. 易语言反截图_【易语言】模仿QQ截图
  5. 细数SkyEye异构仿真的5大特色
  6. eclipse 快捷键总结
  7. K8S_Google工作笔记0011---通过二进制方式_部署etcd集群
  8. oracle java 面试题及答案_Oracle面试题及答案
  9. Apollo注册到自己的Eureka注册中心+配置中心集群
  10. (维基百科LaTeX公式显示异常)解决方法
  11. python编写程序输入球的半径_使用python,我希望绘制一个具有给定半径的3D球形帽...
  12. 根据经纬度查询具体地址
  13. 城市场景车路协同网络该怎么建?
  14. java 多线程 超时_【Java】Java多线程任务超时结束的5种实现方法
  15. expdp/impdp 使用总结
  16. java 枚举values()方法
  17. 深度清理C盘空间,让你的C盘多出20G
  18. 用R语言拟合Eurogenes G25祖源坐标的学习笔记
  19. Unity游戏存档-PlayerPrefs类
  20. 高通收购恩智浦过审,完美的AI布局即将开启

热门文章

  1. iframe关闭时触发事件_超详细的mysql数据库事件--定时任务介绍及日常管理
  2. FPGA卡拉ok系统--均衡器
  3. 游戏AI的缘起与进化
  4. 牛顿迭代法——雷神之锤
  5. 【工业物联网】如何假装很懂工业物联网?
  6. .html是什么方法,关于html:HTTP方法的默认形式是什么?
  7. linux下使用sed修改hosts表
  8. 浅谈:excel的vba数组
  9. 算法与程序设计(四):贪心算法
  10. 旋转图片轮播html,js实现旋转图片轮播