精华内容
下载资源
问答
  • maven配置snapshot快照库和release发布库 在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次。 我们知道,...


    在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次。
    我们知道,maven的依赖管理是基于版本管理的,对于发布状态的artifact,如果版本号相同,即使我们内部的镜像服务器上的组件比本地新,maven也不会主动下载的。
    如果我们在开发阶段都是基于正式发布版本来做依赖管理,那么遇到这个问题,就需要升级组件的版本号,可这样就明显不符合要求和实际情况了。
    但是,如果是基于快照版本,那么问题就自热而然的解决了,而maven已经为我们准备好了这一切。

     maven中的仓库分为两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本。
     定义一个组件/模块为快照版本,只需要在pom文件中在该模块的版本号后加上-SNAPSHOT即可(注意这里必须是大写)
     
     如下:

      <groupId>com.china.ssm</groupId>
      <artifactId>ssmDemo</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>jar</packaging>


    maven会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。
    如果是快照版本,那么在mvn deploy时会自动发布到快照版本库中,而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。
    如果是正式发布版本,那么在mvn deploy时会自动发布到正式版本库中,而使用正式版本的模块,在不更改版本号的情况下,编译打包时如果本地已经存在该版本的模块则不会主动去镜像服务器上下载。


    所以,我们在开发阶段,可以将公用库的版本设置为快照版本,而被依赖组件则引用快照版本进行开发,在公用库的快照版本更新后,
    我们也不需要修改pom文件提示版本号来下载新的版本,直接mvn执行相关编译、打包命令即可重新下载最新的快照库了,从而也方便了我们进行开发。


    接下来要介绍的是如何在项目中应用snapshot和release库,应用snapshot和release库达到不同环境下发布不同的版本的目的,首先看一个pom文件的定义:


     

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
        <modelVersion>4.0.0</modelVersion>  
        <groupId>com.china.ssm</groupId>  
        <artifactId>ssmDemo</artifactId>  
        <packaging>jar</packaging>  
        <version>${project.release.version}</version>  
        <name>ssmDemo</name>  
        <url>http://maven.apache.org</url>  
          
        <properties>  
            <project.release.version>0.1-SNAPSHOT</project.release.version>  
        </properties>  
          
     
        <profiles>  
            <profile>  
                <id>release</id>  
            <properties>  
                <project.release.version>0.1</project.release.version>  
            </properties>  
            </profile>  
        </profiles>  
          
          
        <!--定义snapshots库和releases库的nexus地址-->  
        <distributionManagement>  
            <repository>  
                <id>nexus-releases</id>  
                <url>  
                    http://192.168.3.135:8081/nexus/content/repositories/releases/  
                </url>  
            </repository>  
            <snapshotRepository>  
                <id>nexus-snapshots</id>  
                <url>  
                    http://192.168.3.135:8081/nexus/content/repositories/snapshots/  
                </url>  
            </snapshotRepository>  
        </distributionManagement>  
     
    </project>

     

    首先我们看到pom文件中version的定义是采用占位符的形式,这样的好处是可以根据不同的profile来替换版本信息,比如maven默认是使用0.1-SNAPSHOT作为该模块的版本。

    1、如果在发布时使用mvn deploy -P release 的命令,那么会自动使用0.1作为发布版本,那么根据maven处理snapshot和release的规则,由于版本号后不带-SNAPSHOT故当成是正式发布版本,会被发布到release仓库;

    2、如果发布时使用mvn deploy命令,那么就会使用默认的版本号0.1-SNAPSHOT,此时maven会认为是快照版本,会自动发布到快照版本库。


    在distributionManagement段中配置的是snapshot快照库和release发布库的地址,我这里是采用nexus作为镜像服务器。
    对于版本库主要是id和url的配置,配置完成后就可以通过mvn deploy进行发布了,当然了,如果你的镜像服务器需要用户名和密码,那么还需要在maven的settings.xml文件中做如下配置:

    <server>  
      <id>nexus-releases</id>  
      <username>admin</username>  
      <password>admin123</password>  
    </server>  
     
    <server>  
      <id>nexus-snapshots</id>  
      <username>admin</username>  
      <password>admin123</password>  
    </server>


    注意这里配置的server的id必须和pom文件中的distributionManagement对应仓库的id保持一致,maven在处理发布时会根据id查找用户名称和密码进行登录和文件的上传发布。

    我们这里通过profile的定义就可以在发布灵活切换snapshot快照版本和release正式版本了,
    在被依赖的组件中也可以使用profile来定义在开发阶段使用快照库,在发布阶段使用正式库的功能,只需要在不同的profile中覆盖默认的properties属性值即可。

     

    展开全文
  • Maven Setting.xml配置 D:\java\mavenRepos releases deployment cykj snapshots deployment cykj nexusSnapashots http://192.168.2.18:8081/nexus/content/groups/public/ public-snapshots ...
    Maven Setting.xml配置
    <?xml version="1.0" encoding="utf-8"?>
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <!-- 本地仓库配置 -->
    <localRepository>D:\java\mavenRepos</localRepository>
    <pluginGroups>
    </pluginGroups>
    <proxies>
    </proxies>
    <!-- 服务用户配置 -->
    <servers>
    <server>
    <id>releases</id>
    <username>deployment</username>
    <password>cykj</password>
    </server>
    <server>
    <id>snapshots</id>
    <username>deployment</username>
    <password>cykj</password>
    </server>
    </servers>
    <!-- 镜像配置 -->
    <mirrors>
    <!-- 对snapshots版本有效 -->
    <mirror>
    <id>nexusSnapashots</id>
    <url>http://192.168.2.18:8081/nexus/content/groups/public/</url>
    <mirrorOf>public-snapshots</mirrorOf>
    <interval>always</interval>
    </mirror>
    <mirror>
    <id>nexusMirror</id>
    <name>local repos</name>
    <url>http://192.168.2.18:8081/nexus/content/groups/public/</url>
    <mirrorOf>*</mirrorOf>
    </mirror>
    </mirrors>
    <!-- 条件配置 -->
    <profiles>
    <profile>
    <id>nexusRepository</id>
    <!-- jar包仓库配置 -->
    <repositories>
    <repository>
    <id>nexusSnapashots</id>
    <name>nexus-snapshots</name>
    <url>http://192.168.2.18:8081/nexus/content/groups/public/</url>
    <releases>
    <enabled>false</enabled>
    </releases>
    <snapshots>
    <enabled>true</enabled>
    </snapshots>
    <layout>default</layout>
    <snapshotPolicy>always</snapshotPolicy>
    </repository>
    <repository>
    <id>nexusMirror</id>
    <name>nexus-snapshots</name>
    <url>http://192.168.2.18:8081/nexus/content/groups/public/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>false</enabled>
    </snapshots>
    <layout>default</layout>
    <snapshotPolicy>always</snapshotPolicy>
    </repository>
    </repositories>
    <!-- 插件仓库配置 -->
    <pluginRepositories>
    <pluginRepository>
    <id>nexusMirror</id>
    <name>nexus mirror</name>
    <url>http://192.168.2.18:8081/nexus/content/groups/public/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>false</enabled>
    <updatePolicy>always</updatePolicy>
    <checksumPolicy>warn</checksumPolicy>  
    </snapshots>
    </pluginRepository>
    </pluginRepositories>
    </profile>
    </profiles>
    <!-- 激活profile -->
    <activeProfiles>
    <activeProfile>nexusRepository</activeProfile>
    </activeProfiles>
    </settings>

    关于发布到nexus仓库中,使用mvn deploy命令

    eclipse中配置run configuration中加入deploy参数,如图


    发布项目到nexus上在pom.xml中加入

    <distributionManagement>
    		<repository>
    			<id>releases</id>
    			<name>Nexus Releases Repository</name>
    			<url>http://192.168.2.18:8081/nexus/content/repositories/releases/</url>
    		</repository>
    		<snapshotRepository>
    			<id>snapshots</id>
    			<name>Nexus Snapshots Repository</name>
    			<uniqueVersion>false</uniqueVersion>
    			<layout>legacy</layout>
    			<url>http://192.168.2.18:8081/nexus/content/repositories/snapshots/</url>
    		</snapshotRepository>
    	</distributionManagement>
    注意id与setting中server的id保持一致
    server中配置的用户名密码为nexus中的用户id和密码,注意是id不是name,否则报错,当时也是被坑了个first blood出来..

    关于SNAPSHOT版本简单介绍一下

    如pom.xml中配置<version>1.0.0-SNAPSHOT</version>

    表示快照版本,版本虽为1.0.0,但是每次都会使用最新的版本,参考nexus仓库截图,每次提交都会产生不同的版本号


    关于发布到nexus仓库中,使用mvn deploy命令

    eclipse中配置run configuration中加入deploy参数,如图

    展开全文
  • IDEA使用maven刷新SNAPSHOT版本依赖包

    千次阅读 2019-07-20 16:00:30
    许多小伙伴在使用 IDEA 进行本地开发时,经常会遇到 maven 无法刷新到最新依赖包的情况。由于这些问题频频发生,严重影响了大家的开发效率,因此,技术组通过研究和实验,最终找到了解决此问题的办法。具体方案如下...

    许多小伙伴在使用 IDEA 进行本地开发时,经常会遇到 maven 无法刷新到最新依赖包的情况。由于这些问题频频发生,严重影响了大家的开发效率,因此,技术组通过研究和实验,最终找到了解决此问题的办法。具体方案如下:

    1、修改 IDEA 配置的 maven setting file 的内容参考《本地开发环境 maven settings.xml 文件内容》,也可以直接下载该文件(settings.xml)进行替换即可。

    描述:

    在 settings.xml 配置里面,添加了 <updatePolicy>always</updatePolicy> 配置,其效果与 IDEA 中勾选 always update snapshots 是一样的。正因为如此,避免了有些不熟悉 IDEA 或忘记勾选 always update snapshots 选项的小伙伴刷新 maven 无效的问题。

    建议替换掉 maven 默认settings.xml ,避免需要修改IDEA配置。如果默认的settings.xml 文件没有修改,在新项目中又忘记指定,则容易出现问题。                                                                                                                

     

     

     

                              图1  IDEA maven setting 文件配置

     

     

    2、在导入新 maven 项目时,全部默认 next 到底,不要改变任何选项(最主要是不要改变 profiles 选择,如下图)

     

    3、maven 项目的Profiles配置说明

     

    展开全文
  • Maven配置文件中版本使用-SNAPSHOT

    万次阅读 2016-09-22 19:02:50
    maven项目中的快照版本是用来做什么的

    今天看《Maven实战》,发现一个以前忽略的问题,就是在新建maven工程中的pom文件中版本号总是写成下面这样的:
    <version>0.0.1-SNAPSHOT</version>
    一直也不理解为什么这么写,以为是一种新建工程的规范。今天才知道这样写是将maven工程的版本标记为快照版本。下面举个例子说一下快照版本的应用场景。
    现在小A在开发A项目,小C(别问我小B去哪了…)在开发C项目,而且C项目中需要依赖A项目的部分功能,所以小C需要在自己工程的pom文件中加入一个A项目的依赖。因为小A在开发A项目,需要经常对A项目build,然后新功能给小C使用。那么小C如何获取最新的A项目呢?
    方案一:
    小C自己签出项目A的代码进行构建。【版本控制、maven构建、构建出问题还需要自己解决→→低效】
    方案二:
    小A每次发布项目到私仓后,小C删除本地仓库的项目A,然后构建自己的项目。【手工干预→→不合理】
    方案三:
    小A每次发布新的版本号0.0.2,0.0.3,0.0.4…,两人进行频繁的版本更新。【版本号滥用】
    使用快照版本就可以解决上述问题,当版本号加上标识-SNAPSHOT后,发布到私仓时会自动为构件打上时间戳,比如1.0-20160922.185543-2就表示2016年9月22日18点55分43秒第2次快照。所以当小C依赖A项目,发现是快照版本的项目,会直接去私仓中检查A的是否有最新构件,然后使用。
    当然,在项目完成发布时,需要将快照版本改为稳定版本,即2.1之类的。

    展开全文
  • maven3 snapshot 使用配置

    千次阅读 2017-04-27 15:22:31
    maven的依赖管理是基于版本管理的,在maven2之后,把版本管理细化snapshot 快照仓库和release发布仓库。release版本,对于发布状态的artifact(就是被依赖的jar包),如果版本号相同,即使我们内部的镜像服务器上的...
  • 使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次。我们知道,maven的依赖管理是基于版本管理的,对于发布状态的...
  • maven 不能使用 snapshot 的解决方式

    千次阅读 2019-05-29 05:57:24
    www.cnblogs.com/2005wind/p/…最近项目需要用到snapshot的包来进行构建过程,但是怎么都下不了构建的snapshot包。查询了相关资料,发现网上的资料不全,特总结下:我使用的是nexus来作为代理中央库proxy。检查步骤...
  • 使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次。 我们知道,maven的依赖管理是基于版本管理的,对于发布状态...
  • Maven SNAPSHOT作用

    千次阅读 2019-02-28 08:45:42
    使用SNAPSHOT之后,maven会经常去私服或是中央仓库中拉取最新 的这个jar的版本;而没有SNAPSHOT的jar,则会从本地仓库中查找,本地不存在,才去中央仓库中拉取。 更新频率:需要在setting.xml文件中进行配置。 ...
  • maven配置

    2018-01-07 20:36:08
    Maven配置文件的解释  公司名(cn.et)  项目名  (版本号) SNAPSHOT (开发阶段(不稳定)) RELEASE(开发阶段(稳定)) 1.配置maven连接到私服,下载架包 id 和name 可以随便自己取 主要是URL ...
  • maven的安装配置实用说明 1.在Eclipse中创建maven项目,在视图中可以看到创建的项目。 ...a、pom.xml项目配置文件 ...artifactId定义了当前Maven项目在组中...version指定了maventest项目当前的版本——1.0-SNAPSHOT
  • maven git 工程版本管理

    千次阅读 2017-02-11 21:59:20
    maven版本管理,pom.xml 中的该包的版本号,主要是在打包后携带版本信息,以此,我们可以通过配置mavensnapshot版和release版的版本使用deploy命令存储版本包,如果是开发阶段,那使用版本snapshot 版 如...
  • 使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次。我们知道,maven的依赖管理是基于版本管理的,对于发布状态的...
  • 使用过程中,Maven默认配置是不能下载SNAPSHOT包的,这是基于一种代码稳定性进行考量得出的结论。引入SNAPSHOT包最大的问题就是,由于SNAPSHOT允许重复上传,所以引用一个这样的包开发的代码有可能在使用过程中会...
  • 1、检查nexus是否纳入public版本中: 2、配置中是否启用snapshots功能。以下方法两种设置都可以,任选一个即可。 一种是在项目pom.xml使用: <repositories> <repository> <id>test-nexus&...
  • 3.Maven(后面为了项目兼容性,使用了3.0.5版本) 3.1简介:Apache Maven Project -- Apache优秀的开源项目,...团队开发,Maven管理项目的Release和Snapshot版本,方便多模块(Module)项目的各模块之间快速集成。 3.2
  • Maven相关配置和概念

    2017-09-01 17:04:53
    maven参考文档 maven坐标体系 在maven中,所有的依赖都是通过坐标计算的,坐标体系有以下元素: ...项目版本,以-SNAPSHOT结尾的代表为快照版本,其他的为RELEASE版本packaging  依赖类型,常见的有pom
  • maven

    2017-08-23 11:20:55
    maven配置文件pom.xml中: 对于jar的引用区分正式版和snapshot版. 一般情况下,仓库氛围release版本和snapshot版本.前者放稳定的jar后者放...使用snapshot版本,可以依据策略,一般情况下是每次都去仓库拉去快照版本.
  • [Maven]配置文件

    2020-12-28 01:41:09
    01. 使用场景 多团队协同快速开发一款大型应用软件时, 功能交互团队(app.jar:1.0)需要使用数据服务团队(data-service.jar:1.0)的数据支持. ...快照(SNAPSHOT)是一个特殊版本, 即目前开发拷贝. 数据团队每次...
  • IDEA配置maven项目流程

    2020-11-25 19:58:12
    第一步: file - new - project - maven,暂时直接next 第二步:确定项目名称,确定项目路径(建议...第三步:配置使用maven和settings.xml file - settings - maven 1确定使用的maven的路径 2 点击override 3 选择使
  • Maven

    2019-10-10 20:00:39
    MavenMaven使用流程:pom.xml其他标签:SNAPSHOT所有标签介绍maven项目目录层级的构成(不一定要全用)mvn操作maven配置插件resource Maven 使用流程: download 在IDE中导入(一般自带的版本都较低)。 pom.xml ...
  • 1、如果在发布时使用 mvn deploy -P release 的命令,那么会自动使用0.1作为发布版本,那么根据 maven 处理 snapshot 和release 的规则,由于版本号后不带 -SNAPSHOT 故当成是正式发布版本,会被发布到 release 仓库...
  • Maven 快照的使用

    千次阅读 2017-02-28 11:57:25
    需求:先有项目S在开发阶段,需要定期优化,然后有其他项目B需要依赖这个项目进行开发,由于项目S不稳定,经常更新版本,为了避免项目B频繁维护S项目的依赖关系,可将项目S设定为快照版本。 步骤: 1. 在项目S的...

空空如也

空空如也

1 2 3 4 5 6
收藏数 108
精华内容 43
关键字:

maven配置使用snapshot版本