问题描述

我有两个项目:父项目:A,子项目:B

在A /pom.xml中:

<groupId>com.dummy.bla</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>pom</packaging>

在B /pom.xml中,我有:

    <parent>
<groupId>com.dummy.bla</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
</parent> <groupId>com.dummy.bla.sub</groupId>
<artifactId>kid</artifactId>

我想要B从父级继承版本,所以我需要把0.1-SNAPSHOT放在A/pom.xml中的唯一地方就是A/pom.xml。但是,如果我从父节下的B/pom.xml中删除<version>0.1-SNAPSHOT</version>,maven会抱怨父级的缺少版本。

有没有办法我可以使用${project.version}或类似的东西,以避免在两个poms中有01.-SNAPSHOT

最佳解决方案

不,没有。您必须指定父级版本。幸运的是,它被继承为模块的版本,在大多数情况下是理想的。此外,这个父母的版本声明由Maven Release Plugin自动触发,所以 – 实际上,只要你使用Maven Release Plugin发布或者只是碰撞版本,你就可以在2个地方使用版本。

请注意,在某些情况下,此行为实际上是可行的,并提供了更多的灵活性,您可能需要。有时你想使用一些以前的父母的版本来继承,但这不是主流的情况。

次佳解决方案

Maven不是以这种方式工作,而是为了实现这一目标而存在一种解决方法(可能是副作用,你将不得不尝试一下)。诀窍是告诉孩子项目通过它的相对路径而不是纯粹的maven坐标找到它的父项,而且外部化一个属性中的版本号:

父母pom

<groupId>com.dummy.bla</groupId>
<artifactId>parent</artifactId>
<version>${global.version}</version>
<packaging>pom</packaging> <properties>
<!-- Unique entry point for version number management -->
<global.version>0.1-SNAPSHOT</global.version>
</properties>

小孩pom

<parent>
<groupId>com.dummy.bla</groupId>
<artifactId>parent</artifactId>
<version>${global.version}</version>
<relativePath>..</relativePath>
</parent> <groupId>com.dummy.bla.sub</groupId>
<artifactId>kid</artifactId>

我把这个伎俩用于我的一个项目一段时间,没有任何具体问题,除了maven在构建开始时记录了很多警告,这不是很优雅。

EDIT

似乎maven 3.0.4不允许这样的配置了。

第三种解决方案

最简单的更新版本imo的方法:

mvn versions:set -DgenerateBackupPoms=false

(在您的根/父pom文件夹中这样做)。

你的poms被解析,你被问到要设置哪个版本。

第四种方案

是的,但您也可以使用"mvn release:update-versions -DdevelopmentVersion={version}"来更新POM中的版本号

Maven项目版本继承 – 我必须指定父版本?的更多相关文章

  1. maven项目pom继承关系

    <dependency>部分下添加<exclusions>标记 Dependencies:是可选依赖(Optional Dependencies) Exclusions:是依赖 ...

  2. 配置maven项目的开发时的默认jdk版本

    配置所有maven项目的默认jdk版本,若不配置则提示"Warning:java: 源值1.5已过时, 将在未来所有发行版中删除" 在settings.xml文件中profiles ...

  3. pom.xml中使用“import”的scope来解决Maven项目单继承问题

    测试环境 maven 3.3.9 想必大家在做SpringBoot应用的时候,都会有如下代码: <parent> <groupId>org.springframework.bo ...

  4. Tomcat打包时多项目共享jar和精确指定jar版本

    在产品打包发布时一个tomcat中如果存在多个war,部署的一般方式是部署到%TOMCAT_HOME%/webapps目录下,目录结构遵循J2EE规范,把引用的jar放到%TOMCAT_HOME%/w ...

  5. phpstudy----------如何将phpstudy里面的mysql升级到指定版本,如何升级指定PHP版本

    1.下载指定版本:从官网上下载高版本的 MySQL :https://dev.mysql.com/downloads/file/?id=467269,选的版本是 5.7.17 2.请注意第四部以前是可 ...

  6. maven项目配置框架

    任何一个maven项目都会继承一个默认的父pom配置:Super POM,详见:https://maven.apache.org/guides/introduction/introduction-to ...

  7. eclipse新建maven项目(1)

    首先看一下eclipse版本,我用的是最新版Mars2. 下载地址自行搜索关键字:“eclipse官网”即可,注意下版本,32bit or 64bit. maven插件以及svn等相关插件安装设置问题 ...

  8. 创建第一个Maven项目

    -----------------------siwuxie095                                     创建第一个 Maven 项目         1.打开 Ec ...

  9. eclipse新建maven项目(2)

    本篇博文是继续之前的博文eclipse新建maven项目(1),那篇博文不在随笔在文章中.首先按照之前那篇博文进行创建maven项目操作,一系列操作下来之后发现刷新项目后会报错: 别急哈,可以解决. ...

随机推荐

  1. EBS-BG&LE&OU

    SELECT DISTINCT hrl.country,                hroutl_bg.NAME            bg,                hroutl_bg.o ...

  2. Objective-C 学习笔记(三) Numbers/数字

    Objective-C Numbers/数字 Objective-C中提供了一系列的NSNumber和重要的工作方法: + (NSNumber *)numberWithBool:(BOOL)value ...

  3. struts中request传递中文乱码问题

    系统本来是好好地,这两天升级后,各种问题不断,总而言之,一句话,心惊胆战. 今天,搜索任何中文,都是有乱码,在action中转码就ok了.公司系统那么多action,都转码,要累死吧.配置的过滤器都不 ...

  4. Solr相似度算法一:DefaultSimilarity(基于TF-IDF的默认相似度算法)

    默认的similarity是基于TF/IDF 模块. 该 similarity有以下配置选项: discount_overlaps –确定是否重叠的标识(标记位置增量为0)都将被忽略在正常计算的时候. ...

  5. asp.net——正则表达式

    在平时的开发中常常用到替换法:  普通的字符串替换可以使用string.replace(string,string),但是比较难解决HTML文本的替换. 经我几番查找,终也找出解决办法:正则匹配替换. ...

  6. c# 前后日期设置

    List<string> list = new List<string>(); //根据当月 显示前6个月 for(int i=0;i<6;i++) { list.add ...

  7. HDP Spark2 HIVE3.1 的问题

    HDP 上安装了 Hive3.1 和 Spark2, 提交 Spark 作业时,报找不到 Hive 中表的问题 但是查一了下 hive 表,明明是存在这个表的.查看日志,注意到如下的一段日志. 没修改 ...

  8. zTree第一章,纯静态

    zTree v3.5 Demo 演示 http://www.treejs.cn/v3/demo.php#_101 ------------------------------------------- ...

  9. CVE-2018-15982漏洞复现

    作者:欧根 漏洞信息:CVE-2018-15982 Adobe已发布适用于Windows,macOS,Linux和Chrome OS的Adobe Flash Player安全更新.这些更新解决一个  ...

  10. 解决修改完系统默认python版本后yum不可用的问题!!!!!!

    文章转自: http://www.linuxidc.com/Linux/2013-05/84727.htm #vi /usr/bin/yum 将文件头部的: #!/usr/bin/python 改为: ...