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中的版本号

原文地址:https://www.cnblogs.com/jice/p/9073687.html

时间: 2024-11-14 12:13:20

maven父子模块deploy 问题的相关文章

第二章 Java框架整合--maven父子模块

2.1.maven父子模块 在实际开发中,我们基本都会用maven父子分模块的方式进行项目的开发. 2.2.实际操作 2.2.1.手工建立一个ssmm0的文件夹,并在该文件夹中加入一个pom.xml文件,该pom.xml文件内容如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmln

基于tomcat插件的maven多模块工程热部署

内容属原创,转载请注明出处 写在前面的话 最近一直比较纠结,归根结底在于工程的模块化拆分.以前也干过这事,但是一直对以前的结果不满意,这会重操旧业,希望搞出个自己满意的结果. 之前有什么不满意的呢? 1. 基于maven拆分模块后,热部署的效果不好,经常出故障. 2. 对于多个子web工程,不能做到任意一个web工程都可以放到tomcat里运行,要在外面搞个壳子组合多个工程. 于是,有了这纠结的一周,也有了此文. 本文关于什么 如标题所言,本文涉及到如下几个内容: 1. maven多模块工程 2

Maven多模块项目管理小结

题记 最近刚完成一个用Maven构建的Web项目,看了一些Maven方面的书,比如<maven实战>,但还是对Maven多模块项目理解得不清晰,所以花了一点时间好好研究了下,现分享如下. 问题 下面是一个简略的项目结构图 Parent `------ childA(BusinessLayer)           `--- pom.xml `------ childB(WebLayer)          `--- pom.xml `------ pom.xml 1.Parent怎么能找到ch

maven的模块划分

所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml.它们之间通过继承和聚合(也称作多模块,multi-module)相互关联.那么,为什么要这么做呢?我们明明在开发一个项目,划分模块后,导入Eclipse变成了N个项目,这会带来复杂度,给开发带来不便. 为了解释原因,假设有这样一个项目,很常见的Java Web应用.在这个应用中,我们分了几层: Dao层负责数据库交互,封装了Hibernate交互的类. Service层处理业务逻辑,放一些Service接口和实

Maven 多模块项目 实现

先上git的项目地址: http://git.oschina.net/alexgaoyh/MutiModule-parent 最近在学习使用Maven,在学习使用Maven多模块项目的过程中,打算整合spring mybatis进行项目练手,模块的划分刚开始很纠结,是根据业务划分还是根据模块划分,最终觉得MVC的思想有他存在的道理,在多模块划分的过程中,使用了domain persist service controller的划分方式(entity dao service controller)

maven多模块项目构建

描述 一个大的企业级项目通常跨越了数十万行代码,牵涉了数十或数百软件人员的努力.如果开发者在同一个项目下开   发,那么项目的管理.构建将会变得很难控制.因此设计人员会将项目划分为多个模块,多个模块独立开发.构建,    最终通过依赖整合到一起.Maven的聚合特性能够把项目的各个模块集合在一起构建,而Maven的继承特性则能帮助抽取各模块相同的依赖和     插件配置,在简化POM的同时,还能促进各个模块配置的一致性. 聚合 通过一个POM模块来统一构建多个模块,Maven可以根据依赖关系计算

Spring Boot 项目实战(一)Maven 多模块项目搭建

Maven父项目 以SpringBoot项目为例https://blog.csdn.net/weixin_30606669/article/details/99478544 Maven 多模块父子工程 (含Spring Boot示例)https://www.cnblogs.com/meitanzai/p/10945085.html https://www.cnblogs.com/orzlin/p/10330163.html 一.前言 最近公司项目准备开始重构,框架选定为 Spring Boot

eclipse导入SVN上的Maven多模块项目

一.SVN上Maven多模块项目结构 使用eclipse导入SVN上的Maven多模块项目 Maven多模块项目所在SVN目录 二.eclipse通过SVN导入到工作空间 工作空间位于F:/HPCWorkspace 2.1 File->Import,选择从SVN检出项目下载 2.2 选择/新建SVN资源库位置 如果资源库还没创建好,选择创建新的资源库位置,如果已经创建好资源库了,那么选择使用现有的资源库位置下载 不存在的话新建 存在的话,选择已经存在的资源库  2.3 选择要从SVN检出的文件夹

Maven聚合模块与继承和Maven的生命周期

端碗吹水 Maven聚合模块: 因为Maven是提倡模块化编程的,所以会以多个工程分为多个模块.如果所有的功能.模块都写在一个工程里的话,不方便于扩展.升级.修改.查看和团队开发,而且也不方便于模块的复用. Maven则是提倡将一个项目拆分成多个工程,每个工程完成一个模块或功能,这些工程就像零件一般,分别去进行开发,分为多个工程也方便于维护和分工合作. 每个工程模块可以通过pom配置文件实现串联,例如配置好pom文件之后,A工程可以直接对B工程的代码进行调用,C工程可以对A和B工程的代码进行调用