maven父子模块deploy 问题
1.问题描述:直接 deploy 子某块,但第三者确不能引用 jar(jar down不下来,但pom不报错)
原因:父子模块项目必须保证父模块pom deploy后,再 deploy 子模块才能被引用到,或者直接 deploy 父 pom 将整个项目模块deploy
2.问题描述:有两个项目:父项目: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个地方使用版本。
请注意,在某些情况下,此行为实际上是可行的,并提供了更多的灵活性,您可能需要。有时你想使用一些以前的父母的版本来继承,但这不是主流的情况。
第二:次佳解决方案(此方案不可行)
原因:虽然此方案本地编译安装可以;但 deploy到私服,外部仍然不能引用。因为${global.version}会打进父 pom和子jar包而不是替换,但引用外部jar包时,该jar 的父模块版本需要确定
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父子模块deploy 问题的更多相关文章
- 第二章 企业项目开发--maven父子模块
2.1.maven父子模块 在实际开发中,我们基本都会用maven父子分模块的方式进行项目的开发. 2.2.实际操作 2.2.1.手工建立一个ssmm0的文件夹,并在该文件夹中加入一个pom.xml文 ...
- 「 从0到1学习微服务SpringCloud 」09 补充篇-maven父子模块项目
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config 「 从0到1学习微服务SpringCloud 」07 RabbitM ...
- 新建maven 父子模块项目
第一步: 第二步: 先创建个简单的空架结构作为父项目 第三步: 创建子项目 第四步: 切换显示不同的maven子项目显示方式 关于maven中的parent聚合一直都有没好好总结,固有这篇. ---- ...
- Maven父子模块引入依赖问题
公共模块如何放到父pom中,而子pom无需再次引入???
- Maven 多模块父子工程 (含Spring Boot示例)
一.为什么要用Maven多模块 假设有这样一个项目,很常见的Java Web应用.在这个应用中,我们分了几层: Dao Service Web 对应的,在一个项目中,我们会看到一些包名: org.xx ...
- [转]Maven 划分模块
所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml.它们之间通过继承和聚合(也称作多模块,multi-module)相互关联.那么,为什么要这么做呢?我们明明在开发一 ...
- IntelliJ Idea14 创建Maven多模块项目
Maven多模块项目的参考资料 Sonatype上的教程 http://books.sonatype.com/mvnex-book/reference/multimodule.html 在这个教程里, ...
- Maven入门,Maven项目的创建,nexus 2.x搭建私服以及Maven多模块项目创建
maven的了解做一个总结,以便日后查阅, 若有不足之处,还望指出,学无止境 当然也能起到入门效果. 一,搭建maven私服 1.工具 a. Nexus 2.5.1-01 b. Maven 3.3.9 ...
- maven多模块项目构建
描述 一个大的企业级项目通常跨越了数十万行代码,牵涉了数十或数百软件人员的努力.如果开发者在同一个项目下开 发,那么项目的管理.构建将会变得很难控制.因此设计人员会将项目划分为多个模块,多个模块独 ...
随机推荐
- Scrapy:腾讯招聘整站数据爬取
项目地址:https://hr.tencent.com/ 步骤一.分析网站结构和待爬取内容 以下省略一万字 步骤二.上代码(不能略了) 1.配置items.py import scrapy class ...
- 华硕AC66U_B1救砖或者恢复固件
手贱,刷了个DD-WRT,然后发现无法还原固件,刷不回原厂固件.网上找不到恢复的方法.还是DD-WRT官网给力,本身就提供了恢复原厂固件的方法,是英文的.但是其中提到的一个工具,现在没有了.ASUS ...
- dp回文
.dp回文子串 通常在dp数组中存放的是 从i到j是否是回文子串 1.动态规划 2.中心扩展法 #include<iostream> #include<algorithm> # ...
- Nginx Http 过滤模块
L69 执行顺序在content阶段后 log阶段前调用的 也就是处理完用户业务后 准备记录处理日志之前 我们可以到nginx http_model.c里查看 数组 执行顺序从下至上顺序执行 copy ...
- ubuntu 16.04上 mysql 5.7 安装笔记
一 安装 ubuntu 采用APT安装方式,可参考: Ubuntu 安装mysql和简单操作 Ubuntu 16.04安装MySQL(5.7.18) A Quick Guide to Using th ...
- linux shell 命令集锦
-h FILEFILE exists and is a symbolic link (same as -L)文件存在并且是一个字符链接(与-L选项相同) dirname $0 定位执行的命令脚本的相 ...
- nginx的限流问题
nginx的限流问题 http{ limit_req_zone $binary_remote_addr zone=req_one:10m rate=100r/s;server{ listen 8080 ...
- 本机Jenkins的使用
1.启动jenkins: 命令:java -jar D:\toolspackage\jenkins\jenkins.war 打开jenkins网页:http://localhost:8080/ 2. ...
- 【XSY3345】生成树 并查集
题目大意 有一个两部各有 \(n\) 个节点的二分图 \(G\),定义 \(G^m\) 为一个 \(m+1\) 层的图,每层有 \(n\) 个节点,相邻两层的诱导子图都和 \(G\) 相同. 给你 \ ...
- [POI2015]KIN[线段树]
很套路的维护最大和子段 #include <cmath> #include <cstring> #include <cstdio> #include <cst ...