精华内容
下载资源
问答
  • Maven记录版本号:SNAPSHOT版和release版区别

    snapshot标记版本号,只要远端nexus库有提交更新,依赖一方不管本地仓库有或者没有,都会从

    远端拉取最新jar包更新本地库,当然在打包时就会打入最新拉取的包。


    release标记的版本号,或者不用release和snapshot标记的普通数字版本号,在版本号不变情况下

    远端nexus库有提交更新,依赖一方在本地仓库已经存在该版本号的jar包时,则不会从远端拉取最

    新jar包更新覆盖本地库,所以在打包时就会打入本地已经存在的包。


    除非删除本地库该版本号记录包或者被依赖方提交更新远端库的新版本号jar包,本地pom.xml依赖

    更新后的版本号,才会重新拉取该依赖版本号包。

     

    展开全文
  • Release版本控制与发布前言POM中SCM配置POM中build配置POM中distributionManagement配置mvn deploymvn release:preparemvn release:perform 前言 Maven代码版本控制与发布 提示:以下是本篇文章正文内容,下面案例...

    前言

    Maven代码版本控制与发布


    提示:以下是本篇文章正文内容,下面案例可供参考

    POM中SCM配置

    代码工程中添加SCM配置

    	<scm>
    		<!--git仓库地址-->
    		<connection>scm:git:http://具体ip地址/sun/deploy.git</connection>
    		<!--git仓库浏览器地址-->
    		<url>http://具体ip地址/sun/deploy/-/tree/master</url>
    		<tag>HEAD</tag>
    	</scm>
    

    POM中build配置

    build配置如下(示例):

    	<build>
    		<pluginManagement>
    			<plugins>
    				<plugin>
    					<groupId>org.apache.maven.plugins</groupId>
    					<artifactId>maven-source-plugin</artifactId>
    					<version>3.2.1</version>
    				</plugin>
    			</plugins>
    		</pluginManagement>
    		<plugins>
    			<plugin>
    				<groupId>org.codehaus.mojo</groupId>
    				<artifactId>versions-maven-plugin</artifactId>
    				<version>2.3</version>
    				<configuration>
    					<generateBackupPoms>false</generateBackupPoms>
    				</configuration>
    			</plugin>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-deploy-plugin</artifactId>
    				<version>2.8.2</version>
    				<configuration>
    					<skip>false</skip>
    				</configuration>
    			</plugin>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-release-plugin</artifactId>
    				<version>2.5.3</version>
    				<configuration>
    					<!--git tag分支名称格式-->
    					<tagNameFormat>Deploy@{project.version}-Release</tagNameFormat>
    					<autoVersionSubmodules>true</autoVersionSubmodules>
    				</configuration>
    				
    			</plugin>
    		</plugins>
    	</build>
    

    POM中distributionManagement配置

    distributionManagement如下(示例):

    配置私服仓库地址

    <distributionManagement>
    		<repository>
    			<id>nexus</id>
    			<!--release发布版本仓库地址-->
    			<url>${deploy-project.releases.url}</url>
    		</repository>
    		<snapshotRepository>
    			<id>nexus</id>
    			<!--snapshot快照仓库地址-->
    			<url>${deploy-project.snapshots.url}</url>
    		</snapshotRepository>
    	</distributionManagement>
    

    mvn deploy

    发布快照版本

    	<modelVersion>4.0.0</modelVersion>
    	<groupId>cn.sunline.deployA</groupId>
    	<artifactId>ProjectA</artifactId>
    	<!--version后面一定要带SNAPSHOT-->
    	<version>1.5-SNAPSHOT</version>
    

    执行mvn deploy进行发布

    mvn deploy
    

    mvn release:prepare

    a.把你项目打一个 release版本
    b.在git的tag中打一个tag
    c. 自动升级 SNAPSHOT 并提交更新后的pom文件到git
    

    例如当前version为1.5-SNAPSHOT,当执行mvn release:prepare时,会在git上面打一个1.5的release版本并打tag,并自动升级SNAPSHOT版本为1.6
    在这里插入图片描述
    在这里插入图片描述

    (注:一定要把本地代码都提交上去,否则会提示你“Cannot prepare the release because you have local modifications”)

    mvn release:perform

    a.去git的tag上拿代码
    b.用tag上的代码,打一个 release版的 包
    c.deploy上你的maven私服
    

    参考地址

    https://blog.csdn.net/u012076316/article/details/52174313

    展开全文
  • 在实际开发过程中,特别是现在推崇的敏捷开发,项目版本的发布非常频繁,有可能是一周就一个版本。对于多模块构建的项目,如何在发布时统一升级项目版本,如果都由人来操作,很容易就漏改某个模块的版...

    在实际开发过程中,特别是现在推崇的敏捷开发,项目版本的发布非常频繁,有可能是一周就一个版本。对于多模块构建的项目,如何在发布时统一升级项目版本,如果都由人来操作,很容易就漏改某个模块的版本,导致出现问题。本文要介绍的就是使用Maven插件来统一管理这些模块的版本,规范化这一过程。

    • 插件: maven-release-plugin

    一、 环境与目标

    1. 示例环境: 基于Maven构建的多模块项目

    • 父项目坐标

        <groupId>com.futao</groupId>
        <artifactId>starter-fustack</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>starter-fustack</name>
    
    • 子模块列表:

        <modules>
            <!--微信小程序-->
            <module>fustack-wx-mini-program</module>
            <!--自动配置-->
            <module>fustack-autoconfiguration</module>
            <!--常量-->
            <module>fustack-consts</module>
            <module>demo-test</module>
            <!--数据库-->
            <module>fustack-db</module>
            <!--基础-->
            <module>fustack-foundation</module>
            <!--腾讯短信-->
            <module>fustack-tencent-cloud-short-message</module>
            <!--WEB支持-->
            <module>fustack-web</module>
            <!--权限控制-->
            <module>fustack-auth</module>
            <!--异常体系-->
            <module>fustack-exceptions</module>
            <!--Redis-->
            <module>fustack-redis</module>
            <!--工具包-->
            <module>fustack-utils</module>
        </modules>
    

    2. 示例目标: 当前处于开发阶段,项目的版本为: 0.0.1-SNAPSHOT,即将需要发布该版本的正式版本: 0.0.1,且在正式版发布之后,下一个开发版本为: 0.0.2-SNAPSHOT。并同时将构建好的构件发布到maven私服。

    二、 插件介绍

    • 插件: maven-release-plugin

    • 命令:

      • mvn release:prepare: 准备发布版本

    1. 检查项目是否有未提交的代码,有的话会报错。

    2. 检查项目是否有快照版本的依赖。

    3. 提示用户输入将要发布的版本号,并且自动将项目中pom文件中的版本号更新为用户输入的版本号。

    4. 提示用户输入一个tagName。

    5. 基于修改后的pom执行构建。

    6. 提交pom变更到VCS。

    7. 提示用户输入下一个开发版的版本号,并且自动将项目中pom文件中的版本号更新为用户输入的版本号。

    8. 提交pom变更到VCS。

    • mvn release:rollback: 回滚prepare阶段的操作,将pom回退至之前的状态并提交,但是不会删除prepare生成的tag标签。

    • mvn release:perform: 执行版本发布,执行mvn deploy命令打包并部署构件到远程仓库。

    • 三、 演示过程

      1. 添加release插件支持

      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
              <!--<tagBase>https://github.com/FutaoSmile/starter-fustack</tagBase>-->
              <!--是否自动为子模块分配父版本。如果设置为false,将提示用户输入每个子模块的版本。-->
              <autoVersionSubmodules>true</autoVersionSubmodules>
              <!--tag标签名-->
              <tagNameFormat>release-by-maven-${version}</tagNameFormat>
          </configuration>
      </plugin>
      
      • 如果需要将构建好的构件发布到自己的maven私服,需要进行以下配置:

        • ~/.m2/settings.xml中添加maven私服的用户名和密码

        • 在项目的pom.xml文件中配置repository

      <distributionManagement>
          <repository>
              <id>对应settings中设置的id</id>
              <url>需要上传到的maven私服地址</url>
          </repository>
      </distributionManagement>
      

      2. 在pom.xml中设置SCM地址

      <scm>
          <!--可读的SCM地址-->
          <!--<connection>scm:git:https://github.com/FutaoSmile/starter-fustack</connection>-->
          <!--可写的SCM地址-->
          <developerConnection>scm:git:https://github.com/FutaoSmile/starter-fustack</developerConnection>
          <!--可以在浏览器中访问的scm地址-->
          <!--<url>https://github.com/FutaoSmile/starter-fustack</url>-->
          <!--设置tagName-->
          <tag>v-release-0.0.1</tag>
      </scm>
      

      3. 执行命令

      • mvn release:prepare

      • mvn relase:perform

      • prepare准备过程截图:

      • 执行版本发布截图:

      • 检查maven私服,构件是否上传成功

      image.png
      • 代码已自动更新至下一个开发版

      image.png

      # 源代码

      • https://gitee.com/FutaoSmile/starter-fustack

      • https://github.com/FutaoSmile/starter-fustack

      特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:

      长按订阅更多精彩▼

      如有收获,点个在看,诚挚感谢

    展开全文
  • 这两种版本的主要区别在于正式版本需手动更新以获取最新版本,快照版本则通过设置使其与最新版本保持同步。特别地,快照版本使用全大写SNAPSHOT。 Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,...

    总的来说,正式版本比较稳定,更新频率较低,用于生产环境。快照版本更新频率较高,多用在开发环境。这两种版本的主要区别在于正式版本需手动更新以获取最新版本,快照版本则通过设置使其与最新版本保持同步。特别地,快照版本使用全大写SNAPSHOT。

    在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个属性构成的,分别是groupId、artifactId以及version。这三个属性可以唯一确定一个组件(Jar包或者War包)。在Nexus仓库中,一个仓库一般分为public(Release)仓和SNAPSHOT仓,前者存放正式版本,后者存快照版本。如果在项目配置文件中(无论是build.gradle还是pom.xml)指定的版本号带有’-SNAPSHOT’后缀,比如版本号为’Junit-4.10-SNAPSHOT’,那么打出的包就是一个快照版本。

    快照版本和正式版本的主要区别在于,本地获取这些依赖的机制有所不同。假设你依赖一个库的正式版本,构建的时候构建工具会先在本次仓库中查找是否已经有了这个依赖库,如果没有的话才会去远程仓库中去拉取。所以假设你发布了Junit-4.10.jar到了远程仓库,有一个项目依赖了这个库,它第一次构建的时候会把该库从远程仓库中下载到本地仓库缓存,以后再次构建都不会去访问远程仓库了。所以如果你修改了代码,向远程仓库中发布了新的软件包,但仍然叫Junit-4.10.jar,那么依赖这个库的项目就无法得到最新更新。你只有在重新发布的时候升级版本,比如叫做Junit-4.11.jar,然后通知依赖该库的项目组也修改依赖版本为Junit-4.11,这样才能使用到你最新添加的功能。

    假设有两个小组负责维护两个组件,example-service和example-ui,其中example-ui项目依赖于example-service。而这两个项目每天都会构建多次,如果每次构建你都要升级example-service的版本,那么你会疯掉。这个时候SNAPSHOT版本就派上用场了。每天日常构建时你可以构建example-service的快照版本,比如example-service-1.0-SNAPSHOT.jar,而example-ui依赖该快照版本。每次example-ui构建时,会优先去远程仓库中查看是否有最新的example-service-1.0-SNAPSHOT.jar,如果有则下载下来使用。即使本地仓库中已经有了example-service-1.0-SNAPSHOT.jar,它也会尝试去远程仓库中查看同名的jar是否是最新的。有的人可能会问,这样不就不能充分利用本地仓库的缓存机制了吗?别着急,Maven比我们想象中的要聪明。在配置Maven的Repository的时候中有个配置项,可以配置对于SNAPSHOT版本向远程仓库中查找的频率。频率共有四种,分别是always、daily、interval、never。当本地仓库中存在需要的依赖项目时,always是每次都去远程仓库查看是否有更新,daily是只在第一次的时候查看是否有更新,当天的其它时候则不会查看;interval允许设置一个分钟为单位的间隔时间,在这个间隔时间内只会去远程仓库中查找一次,never是不会去远程仓库中查找(这种就和正式版本的行为一样了)。

    Maven版本的配置方式为:

    <repository>
        <id>myRepository</id>
        <url>...</url>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>XXX</updatePolicy>
        </snapshots>
    </repository>
    

    其中updatePolicy就是那4种类型之一。如果配置间隔时间更新,可以写作interval:XX(XX是间隔分钟数)。daily配置是默认值。

    所以一般在开发模式下,我们可以频繁的发布SNAPSHOT版本,以便让其它项目能实时的使用到最新的功能做联调;当版本趋于稳定时,再发布一个正式版本,供正式使用。当然在做正式发布时,也要确保当前项目的依赖项中不包含对任何SNAPSHOT版本的依赖,保证正式版本的稳定性。

    参考资料

    展开全文
  • 我们的大部分项目都是开源提供给用户的,这些项目我们都是发布到maven中央仓库,但也有部分内部使用的jar包,我们不希望发布到maven中央仓库,但也需要有发布版本管理,自己搭安装Nexus搭建Maven私有仓库总是有些...
  • Snapshot版本代表不稳定、尚处于开发中的版本 Release版本则代表稳定的版本 (1)如果deploy到远程服务器 如果是 release 只能deploy一次,以后部署的话,就会报错冲突,因此很稳定 (2)但是如果是snapshot的话,你可以...
  • 可以将 release 理解为稳定的发布版本,当版本 release 后,如果你发现你的代码有问题,希望马上进行修改的话,一般来说是不可以的。 代码仓库通常不允许你将 release 版本多次发布,如果你需要进行再次发布的话,...
  • 1.低版本的包和高版本的包冲突的时候,在高版本的包所在的上一层具体依赖里边,去除低版本包的影响 解决依赖版本冲突的方法其实很简单,将不想要或低版本的传递依赖去除掉即可 修改前 <dependency> <...
  • maven----版本号version   ​maven版本构成如下: <主版本>.<次版本>.<增量版本> - <里程碑版本> ​ 一般情况下,主版本和次版本会一直存在,增量版本和里程碑版本见到的相对少的多。...
  • Maven版本插件是一个非常强大的工具,我在很大程度上依赖于它来协调软件版本。 通常,软件发行版本号遵循简单的1.0.0.0-SNAPSHOT格式。 但是最近我需要在版本号中添加限定符-类似于1.0-beta-SNAPSHOT或1.0.0-fix-bug...
  • Spring Cloud Alibaba Version Sentinel Version Nacos Version RocketMQ Version Dubbo Version Seata Version 2.2.6.RELEASE 1.8.1 1.4.2 4.4.0...RELEASE 1.6.3 1.1.1 4.4.0 2.7.3 0.7.1 毕业版本依赖关系(推荐使用)...
  • 一、Maven 版本区别 我们看一个例子啊,打开 Spring 的官网,随便找个项目。 可以看到啊,后面有很多单词,GA 啊、PRE 啊,我们来看看这些个东西是什么意思。 1. SNAPSHOT(快照版本) 这个就是我们项目初期,...
  • 新发行的东西,发布仓库,release正式仓库则是用来保存稳定的发行版本maven的生命周期中各个命令所执行的阶段: package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的...
  • 但在开源项目中,一般通过 GitHub 进行代码托管,并在 GitHub 的 Release 中进行发版并写明更新日志,还可能在 README 中添加 Maven 中央库的徽章。这一过程固定又繁琐,本文通过 maven-semantic-release 和 GitHub ...
  • 在创建Maven项目或者SpringBoot项目... maven版本与idea版本存在兼容性问题,版本不兼容就会报无法导入maven项目的问题。 Unable to import maven project: See logs for details IDEA2018版本只兼容Maven3.6...
  • 1、前言最近群里小伙伴在问有没有maven版本的 jeenotes-ssm「之前是本地 lib 方式」,今天抽空就把改造maven方式码出来了,以供参考,这下不用再催我了~本文环境:MyEclipse + jeenotes-ssm 本地 lib 项目2、改造...
  • 依赖传递 Maven避免 发现以及指定自己的依赖需要的库的需要 通过自动包含传递依赖 Maven可以自动的传递依赖项 依赖中介(Dependency Mediation) ...
  • Release(发布,发行)版本则代表稳定的版本,发行版本,通常不允许覆盖,只允许发布一次。 什么时候用Snapshot版本? 依赖库中的jar正处于开发的阶段,会被经常被更新,这种情况下,如果使用Release,会频繁增加...
  • 意思就是不能用maven加载到这个1.4.1版本的 artifactId 为 spring-cloud-starter-alibaba-nacos-discovery的jar,说白了就是maven库里面没有找到这个artifactId的jar 问题产生的背景:本人最近在学spring cloud ...
  • 基于SpringBoot 2.3.7.RELEASEMaven多模块示例极简教程一、在初始化器上创建SpringBoot全局工程1.1 阿里初始化器1.2 填写配置清单1.3 选择版本1.4 填写工程名1.5 裁剪项目文件二、创建两个Maven子模块2.1 创建demo...
  • 前言 关于微服务的公共依赖模块的抽取、统一版本管理、统一...单独建一个common的maven工程,内部生成一个core module。 核心就两块,一块是最外层的 common-parent(pom artifacId的名字),一块是内层的common 关系
  • 我有一个Java项目X在项目Y上有依赖关系(在pom文件中).我在Y中修改并使用Maven工具构建X,Y然后在没有问题的...我认为它是一个Maven依赖版本或类似的东西……我主要搜索谷歌,但没有任何影响…如何解决这个问题?解决方...
  • maven怎么做版本控制器(建议收藏) 上次发布一篇类似的文章,但是这次我补充了一些内容。 一、dependency相关配置 1.1、scope test:只在测试时使用,打包时不用。 import:单继承。只能用在dependencyManagement...
  • Maven下面的子模块比较多的时候,每次修改工程的版本号都是一件非常的痛苦的事情,因为子模块都引用了顶级父模块的pom,所以虽然在父模块中定义了工程的版本号,但每个子模块中要显示地指定父模块的版本号,否则...
  • 问题描述我有两个项目:父项目:A,子项目:B在A /pom.xml中:com.dummy.blaparent0.1-SNAPSHOTpom在B /pom.xml中,我有:com.dummy.blaparent0.1-SNAPSHOTcom.dummy.bla.subkid我想要B从父级继承版本,所以我需要把...
  • 同时给了之前打基线的一个文档,其中提到的是使用mavenrelease插件自动执行。中间折腾了好久,又是maven的用户名密码不对,导致没有权限,亦或者是我本机安装的git提交有问题。总之折腾了好久,早上在同事的帮助下...
  •  现在主流的Java系的互联网公司里,绝大多数公司都使用Maven作为依赖管理工具,一般我们对于依赖的版本号,常见两种类型:一种以“-RELEASE”结尾,另一种以“-SNAPSHOT”结尾。你别看这一个小小差别,在这里面可是...
  • maven项目统一管理版本号方案

    千次阅读 2021-01-05 16:51:52
    maven项目统一管理版本号的方式 共有两种方案: 第一种亲测,靠谱。 方法一、引用版本管理插件 项目的结果如图: 模拟其他微服务目录一致的test2项目 两个项目的pom文件依赖关系: test1的parent.pom继承test1最...
  • 概览在这个快速教程中,我们将展示如何在Maven中设置Java版本。在继续之前,我们可以检查Maven的默认JDK版本。运行mvn -v命令将显示Maven运行的Java版本。$ mvn -vApache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb...
  • 就知道项目的依赖到底是哪个版本啦: Maven依赖可以分为如下几部分: 直接依赖,就是本项目 dependencies 部分的依赖 间接依赖,就是本项目 dependencies 部分的依赖所包含的依赖 依赖管理,就是本项目 dependency ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 187,527
精华内容 75,010
关键字:

maven版本release