精华内容
下载资源
问答
  • maven版本号管理

    千次阅读 2017-10-31 09:35:32
    如今所说的maven版本号不同于SVN的版本号控制哦!!!之前我们说过Maven版本号分为快照和稳定版本号,快照版本号使用在开发的过程中,方便于团队内部交流学习。而所说的稳定版本号,理想状态下是项目到了某个比較...

    如今所说的maven版本号不同于SVN的版本号控制哦!!!

    之前我们说过Maven的版本号分为快照和稳定版本号,快照版本号使用在开发的过程中,方便于团队内部交流学习。而所说的稳定版本号,理想状态下是项目到了某个比較稳定的状态。这个稳定包括了源码和构建都要稳定。

    一、怎样衡量项目的稳定状态呢?

    1. 所有的自己主动化測试应当所有通过

    2. 项目没有配置不论什么快照版本号的依赖

    3. 项目没有配置不论什么快照版本号的插件

    4. 项目所包括的代码都已经所有提交到了版本号控制系统中

    5.我们应当再一次运行Maven构建,以确保项目的状态是OK的

    6.
    我们将这一次变更提交到版本号控制的主干中,并打上标签

    仅仅有满足了上述6个条件, 我们就能够将这一个快照版本号更新至公布版本号

    二、在开发的过程中,版本要怎样进行变更呢?Maven是否有潜在的约定?

    我们在开发的过程中。下载jar包的时候常常会发现某个jar类似这样:1.2.3-beat-4.jar

    多么复杂的一个名称。。

    以下来解释一下。这里每一个数字的含义:

    “ 1 ” : 表示该版本号的第一个重大版本号

    “ 2 ” : 表示这是基于重大版本号的第二个次要版本号

    “ 3 ” : 表示该次要版本号的第三个增量

    ” beat-4” : 表示该增量的一个里程碑

    用一个图来描写叙述:

    < 主版本号 > —— < 次版本号 > —— < 增量版本号 > —— < 里程碑版本号 >

    主版本号:表示了项目的重大架构变更 struts1 – struts2
    次版本号:表示较大范围的功能添加和变化 Nexus1.5 —- Nexus1.4

    增量版本号:一般表示重大Bug修复

    里程碑版本号:指某一个版本号的里程碑 .-alpha-1 .-beat-1

    看起来有点麻烦啊。 可是在一般来说,我们仅仅会声明主版本号和次版本号,增量版本号和里程碑版本号就不一定了。

    注:maven中约定的版本号次序:

    对于主版本号、次版本号、增量版本号来说他们的比較是基于数字的。因此:1.5>1.4>1.3>1.2.11>1.2.8

    对于里程碑版本号来说,比較是基于字符串的。因此:1.5>1.4>1.3>1.2.3>1.2.11

    三、主干、分支、标签

    上面的笔记中提到了主干和标签,究竟怎样理解主干、分支、标签呢?

    主干: 项目开发代码的主体,是从项目開始到当前都处于活动的状态,从这里能够获得项目最新的源码和差点儿全部的变更历史

    分支: 从主干的某个点分离出来的代码拷贝。通常能够在不影响主干的前提下。在这里进行重大的bug修复或者实验性质的开发。假设达到了预期的目的,通常将这里的变更合并到主干中去。

    标签: 用来标识主干或者分支的某个点的状态,以代表项目的某个稳定状态,也就是通常说的公布状态

    这三个元素,能够清晰的描写叙述出项目的版本号管理,并且也已经成了一个默认的行业标准。

    四、自己主动化版本号公布

    用久了手动版本号公布之后。我们会想到是否能进行自己主动化的公布版本号。答案是肯定的,这将引入一个新的插件:Maven Release Plugin

    通过一些必要的配置。就能够完毕版本号公布

    Maven Release Plugin 插件简单介绍:

    该插件主要有三个目标:release: prepare, release: rollback, release: perform (什么是插件目标),在介绍分支自己主动化的时候还会引入branch目标

    ①release:prepare 准备版本号公布。依次运行下列操作

    1. 检查项目是否有未提交的代码

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

    3. 依据用户的输入将快照版本号升级为公布版

    4. 将POM中的SCM信息更新为标签地址

    5. 基于改动后的POM运行maven构建

    6. 提交POM变更

    7. 基于用户输入为代码打标签

    8. 将代码从公布版升级为新的快照版

    9.提交POM变更

    release: rollback

    回退release: prepare所运行的操作。

    将POM回退至release:prepare之前的状态。并提交。

    注:该步骤不会删除release:prepare生成的标签,须要用户手动删除

    release: perform

    运行版本号公布

    签出release:prepare生成的标签中的源码,并在此基础上运行mvn deploy命令打包并部署构件至仓库

    注:要为项目公布版本号,首先须要为其加入正确的版本号控制系统信息(这是由于Maven Release Plugin须要知道版本号控制系统的主干、标签等地址后才干运行相关操作)

    ②分支的自己主动化创建

    先看一下Maven Release Plugin 的branch目标能帮助我们做哪些事情

    1. 检查本地有无未提交的代码

    2. 将分支更改POM的版本号。如:1.1.0-SNAPSHOT改成1.1.1-SNAPSHOT

    3. 将POM中的SCM信息更新为分支地址

    4. 提交以上更改

    5. 将主干代码拷贝到分支中

    6. 改动本地代码使其回退到分支前的版本号(用户能够指定新的版本号)

    7. 提交本地更改

    注:此时也必须正确的配置SCM信息

    五、代码安全

    代码安全是我们比較关心的一个问题, 比方说。当我们从中央仓库下载第三方构件的时候,我们可能要去验证这些文件的合法性,或者当我们公布项目后。使用我们项目的人也要验证

    引入一个新的插件:Maven GPG Plugin 自己主动的完毕签名

    在使用Maven GPG Plugin之前,首先须要确定GPG是可用的,然后再POM中配置插件就可以

    pom.xml


    org.apache.maven.plugins
    maven-gpg-plugin
    1.0


    sign-artifacts
    verify

    sign



    然后使用一般的Maven命令签名并公布项目构件
    $mvn clean deploy -Dgpg.passphrase=**

    注:
    1. 假设不提供 -Dgpg.passphrase參数,执行时就会要求输入password

    本文同意转载,但请标明出处:http://blog.csdn.net/wanghantong/article/38424065,
    版权全部

    展开全文
  • 如今所说的maven版本号不同于SVN的版本号控制哦!!! 之前我们说过Maven版本号分为快照和稳定版本号,快照版本号使用在开发的过程中,方便于团队内部交流学习。而所说的稳定版本号,理想状态下是项目到了某个比較...

    本文同意转载,但请标明出处:http://blog.csdn.net/wanghantong/article/38424065, 版权全部

    如今所说的maven版本号不同于SVN的版本号控制哦!!!

    之前我们说过Maven的版本号分为快照和稳定版本号,快照版本号使用在开发的过程中,方便于团队内部交流学习。而所说的稳定版本号,理想状态下是项目到了某个比較稳定的状态。这个稳定包括了源码和构建都要稳定。

    一、怎样衡量项目的稳定状态呢?

    1. 所有的自己主动化測试应当所有通过

    2. 项目没有配置不论什么快照版本号的依赖

    3. 项目没有配置不论什么快照版本号的插件

    4. 项目所包括的代码都已经所有提交到了版本号控制系统中

    5.我们应当再一次运行Maven构建,以确保项目的状态是OK的

    6. 我们将这一次变更提交到版本号控制的主干中,并打上标签

    仅仅有满足了上述6个条件, 我们就能够将这一个快照版本号更新至公布版本号


    二、在开发的过程中,版本要怎样进行变更呢?Maven是否有潜在的约定?


    我们在开发的过程中。下载jar包的时候常常会发现某个jar类似这样:1.2.3-beat-4.jar

    多么复杂的一个名称。。

    以下来解释一下。这里每一个数字的含义:

    “ 1 ” :  表示该版本号的第一个重大版本号

    “ 2 ” :  表示这是基于重大版本号的第二个次要版本号

    “ 3 ” :  表示该次要版本号的第三个增量

    " beat-4" : 表示该增量的一个里程碑

    用一个图来描写叙述:

    < 主版本号 >  ------   < 次版本号 > ------ < 增量版本号 > ------ < 里程碑版本号 >

    主版本号:表示了项目的重大架构变更  struts1 --  struts2

    次版本号:表示较大范围的功能添加和变化  Nexus1.5 ----   Nexus1.4

    增量版本号:一般表示重大Bug修复  

    里程碑版本号:指某一个版本号的里程碑   *.*-alpha-1  *.*-beat-1

    看起来有点麻烦啊。 可是在一般来说,我们仅仅会声明主版本号和次版本号,增量版本号和里程碑版本号就不一定了。

    注:maven中约定的版本号次序

    对于主版本号、次版本号、增量版本号来说他们的比較是基于数字的。因此:1.5>1.4>1.3>1.2.11>1.2.8

    对于里程碑版本号来说,比較是基于字符串的。因此:1.5>1.4>1.3>1.2.3>1.2.11


    三、主干、分支、标签

    上面的笔记中提到了主干和标签,究竟怎样理解主干、分支、标签呢?

    主干: 项目开发代码的主体,是从项目開始到当前都处于活动的状态,从这里能够获得项目最新的源码和差点儿全部的变更历史

    分支: 从主干的某个点分离出来的代码拷贝。通常能够在不影响主干的前提下。在这里进行重大的bug修复或者实验性质的开发。假设达到了预期的目的,通常将这里的变更合并到主干中去。

    标签: 用来标识主干或者分支的某个点的状态,以代表项目的某个稳定状态,也就是通常说的公布状态

    这三个元素,能够清晰的描写叙述出项目的版本号管理,并且也已经成了一个默认的行业标准。


    四、自己主动化版本号公布

    用久了手动版本号公布之后。我们会想到是否能进行自己主动化的公布版本号。答案是肯定的,这将引入一个新的插件:Maven Release Plugin

    通过一些必要的配置。就能够完毕版本号公布

    Maven Release Plugin 插件简单介绍:

    该插件主要有三个目标:release: prepare,  release: rollback,  release: perform (什么是插件目标),在介绍分支自己主动化的时候还会引入branch目标

    ①release:prepare   准备版本号公布。依次运行下列操作

    1. 检查项目是否有未提交的代码

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

    3. 依据用户的输入将快照版本号升级为公布版

    4. 将POM中的SCM信息更新为标签地址

    5. 基于改动后的POM运行maven构建

    6. 提交POM变更

    7. 基于用户输入为代码打标签

    8. 将代码从公布版升级为新的快照版

    9.提交POM变更

    release: rollback

    回退release: prepare所运行的操作。

    将POM回退至release:prepare之前的状态。并提交。

    注:该步骤不会删除release:prepare生成的标签,须要用户手动删除

    release: perform

    运行版本号公布

    签出release:prepare生成的标签中的源码,并在此基础上运行mvn deploy命令打包并部署构件至仓库


    注:要为项目公布版本号,首先须要为其加入正确的版本号控制系统信息(这是由于Maven Release Plugin须要知道版本号控制系统的主干、标签等地址后才干运行相关操作)


    ②分支的自己主动化创建

    先看一下Maven Release Plugin 的branch目标能帮助我们做哪些事情

    1. 检查本地有无未提交的代码

    2. 将分支更改POM的版本号。如:1.1.0-SNAPSHOT改成1.1.1-SNAPSHOT

    3. 将POM中的SCM信息更新为分支地址

    4. 提交以上更改

    5. 将主干代码拷贝到分支中

    6. 改动本地代码使其回退到分支前的版本号(用户能够指定新的版本号)

    7. 提交本地更改

    注:此时也必须正确的配置SCM信息


    五、代码安全

    代码安全是我们比較关心的一个问题, 比方说。当我们从中央仓库下载第三方构件的时候,我们可能要去验证这些文件的合法性,或者当我们公布项目后。使用我们项目的人也要验证

    引入一个新的插件:Maven GPG Plugin 自己主动的完毕签名

    在使用Maven GPG Plugin之前,首先须要确定GPG是可用的,然后再POM中配置插件就可以

    pom.xml

    <plugin>
    	<groupId>org.apache.maven.plugins</groupId>
    	<artifactId>maven-gpg-plugin</artifactId>
    	<version>1.0</version>
    	<executions>
    	     <execution>
    		<id>sign-artifacts</id>
    		<phase>verify</phase>
    		<goals>
    		      <goal>sign</goal>
    		</goals>
    	     </execution>
    	</executions>
    </plugin>

    然后使用一般的Maven命令签名并公布项目构件

    $mvn clean deploy -Dgpg.passphrase=****

    注:

    1. 假设不提供 -Dgpg.passphrase參数,执行时就会要求输入password








    爱自己的最好方式就是努力奋斗让自己优秀起来。假设你再颓废,别郁闷没有知己、找不到真爱,由于连你自己都不爱自己,还妄想别人爱你吗?

    试问,你有什么值得爱,你配吗?

    往往一个人在乎的不是金钱而是一颗奋斗的心啊!醒悟吧!别再堕落了!





    本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5408185.html,如需转载请自行联系原作者   

    展开全文
  • 例: test test 1.0 test test 1.2 那web项目打包后会使用1.0版本号的test.jar,并不是用最高版本的jar

    示例:

    <dependency>
      <groupId>test</groupId>
      <artifactId>test</artifactId>
      <version>1.0</version>
    </dependency>
    
    <dependency>
      <groupId>test</groupId>
      <artifactId>test</artifactId>
      <version>1.2</version>
    </dependency>


    那web项目打包后会按照依赖顺序导入先依赖的包,示例会使用1.0版本号的test.jar,并不是用更高版本的jar

    展开全文
  • jar包A引了M-0.1版 jar包B引了M-0.2版 这时两个M都会引进路径,可能会有冲突 ...方法一:使用exclusion标签 从A中排除M 或者从B中排除M ...方法二:在pom文件中 自己引入一个M的版本,这样会覆盖A,B中的M版本 

    jar包A引了M-0.1版

    jar包B引了M-0.2版

    这时两个M都会引进路径,可能会有冲突

    如何解决呢

    方法一:使用exclusion标签 从A中排除M 或者从B中排除M

    <dependency>
       <groupId>net.tomjerry</groupId>
       <artifactId>cat-monitor</artifactId>
       <version>1.0.0.RELEASE</version>
       <exclusions>
          <exclusion>
             <groupId>com.alibaba</groupId>
             <artifactId>druid</artifactId>
          </exclusion>
          <exclusion>
             <groupId>org.mybatis</groupId>
             <artifactId>*</artifactId>
          </exclusion>
          <exclusion>
             <groupId>org.apache.httpcomponents</groupId>
             <artifactId>httpclient</artifactId>
          </exclusion>
          <exclusion>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
          </exclusion>
       </exclusions>
    </dependency>

    方法二:在pom文件中 自己引入一个M的版本,这样会覆盖A,B中的M版本 

    展开全文
  • 情景:当使用Spring下的多个包时,为了方便版本号的统一管理,避免出现因不同版本号造成的错误,必须更改为统一的版本号,但是当项目过多时手动修改不方便,因此引入此标签可以方便进行统一的修改。 pom.xml修改...
  • 项目版本号说明  当前版本号:1.0.0-SNAPSHOT ... [主版本号] 是从1开始的整数,表示重大的项目结构和概念调整,一般不会轻易修改该版本号不同的主版本号不承诺能够兼容。  2. [副版本号]是从0开始的整数,表示项
  • maven正式版本和快照版本的区别

    千次阅读 2018-01-17 14:58:01
    在项目pom.xml中,指定版本号带-SNAPSHOT,那么打出的包就是一个快照版本。 快照版本和正式版本的区别:  本地获取这些依赖的机制不同。 如果你依赖一个库的正式版本,构建的时候,先在本地仓库中查找是否已经有...
  • mark: 同级的会高版本覆盖低版本 依赖引入的,都会存在。
  • 文章目录一、场景介绍二、操作流程 一、场景介绍 ...本次主要以项目节点主观的确定版本号,并通过 Maven 的 versin-maven-plugin 插件批量修改父子模块或者子模块的版本,再结合 finalName 标签的定义。
  • Nexus有多个版本的jar,具体为啥打包时会全部拉下来也不清楚,希望知道的朋友回复下我。 解决方法是,maven-war-plugin增加一句配置就好: @{artifactId}@-@{baseVersion}@.@{extension}@ 完整配置为 ...
  • 项目版本号说明  当前版本号:1.0.0-SNAPSHOT ... [主版本号] 是从1开始的整数,表示重大的项目结构和概念调整,一般不会轻易修改该版本号不同的主版本号不承诺能够兼容。  2. [副版本号]是从0开始的整数,表示项
  • 描写叙述,在一个Maven项目中。同一时候依赖了spring-tomcat-weaver 和 struts-core 包。可是spring-tomcat-weaver 须要commons-digester-1.2 struts-core 须要commons-digester-1.8 Pom文件例如以下: <...
  • Maven多模块版本规范

    千次阅读 2017-02-27 15:54:17
    背景 无论是支付端还是金融端的Java项目,大部分都是多模块的Maven项目,同一项目下的不同模块版本比较混乱,发布...3、统一在顶层模块Pom的节中定义所有子模块的依赖版本号,子模块中添加依赖时不要添加版本号 4
  • 第一步判断jar是否加载,还是 加载的jar由于maven依赖管理存在传递依赖,造成依赖的jar版本号不对,相应的类找不到,或者是相应类版本不对,没有对应的方法。一 造成jar 冲突的原因:如果项目中存在对同一jar不同版本...
  • 2.maven打包方式的不同

    2019-12-17 16:17:03
    (1)打包snapshot和正式版本号是不一样的,发布到私服中的命令也不一样,不需要snapshot方式时,各个依赖包下都需要去除 (2)打包过程中可能会遇到的编码错误,可能需要设置打包时的项目编码 (3)spring.maven.plugin...
  • springboot工程版本的问题 ...有显示指定版本号而是在工程中动态适配的,因此就会造成问题,比如版本相差一点, 恰好对应的版本之间某些类备去除了,都会造成很多问题。下面遇到的一些问题,记录 下来: 1.zookeep...
  • Snapshot版本代表不稳定、尚处于开发中的版本,快照版本。 Release版本则代表稳定的版本,发行版本。...在上传jar时,选择Snapshot和Release上传时,在版本号的构建上有所不同,如图: 可以很明显的...
  • 此种原因是因为在pom.xml配置文件里的jdk版和...把pom.xml里的source和target标签里的版本号改成1.6即可。 pom配置: org.apache.maven.plugins maven-compiler-plugin 1.6 1.6 原
  • 3_32江_0330—如何jetty-maven-plugin修改端口 1、确定jetty-maven-plugin的版本 通过学习,我们可以知道不同版本对应的语句会有不同,如果不在对应版本使用对应命令将无法使用,如下图所示,标签不对应版本,...
  • 一、确定java环境是否搭建完成,安装的jdk的版本号是多少安装Maven的版本不同对JDK的版本要求也不同 二、下载Maven并解压至要安装的路径下 官网下载地址:http://maven.apache.org/download.cgi 三、配置Maven
  • maven依赖解决

    2021-02-07 20:23:49
    什么是依赖冲突 依赖冲突是指项目依赖的某一个jar...为jar包指定一个版本,所有用到的都会是这个版本,多个版本号出现问题,可以自己声明一个。父pom.xml 统一版本好,子类直接引用。 <properties> <test..
  • maven的安装位置的lib目录下面有个maven-model-builder-3.3.9jar文件,版本号可能有所不同,解压此jar包。寻找maven-model-builder-3.3.9\org\apache\maven\model\pom-4.0.0.xml

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 161
精华内容 64
关键字:

maven不同版本号