zoukankan      html  css  js  c++  java
  • 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中的版本号

  • 相关阅读:
    洛谷 简单字符串 'P1055ISBN号码' 问题
    P1424
    洛谷训练P1008(循环+暴力)
    C语言中一些知识点
    二叉树的基本功能实现方法(C++)
    值传递,引用传递,指针传递
    istringstream、ostringstream、stringstream类介绍
    类模板的友元
    C++ 标准库和标准模板库(STL)
    常用数据类型对应字节数
  • 原文地址:https://www.cnblogs.com/jice/p/9073687.html
Copyright © 2011-2022 走看看