Maven 之 SNAPSHOT 和 release -----进阶_maven 如何实现snapshot和release自动切换_hankl1990的博客-程序员宅基地

技术标签: maven  

转自:本文来源于铁木箱子的博客http://www.mzone.cc



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

复制代码
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>cc.mzone</groupId>
    <artifactId>myjar</artifactId>
    <version>${project.release.version}</version>
    <packaging>jar</packaging>
 
    <distributionManagement>
        <repository>
        <id>mzone-release</id>
        <url>http://192.168.1.88/nexus/content/repositories/mzone-release</url>
        </repository>
        <snapshotRepository>
        <id>mzone-snapshot</id>
        <url>http://192.168.1.88/nexus/content/repositories/mzone-snapshot</url>
        </snapshotRepository>
    </distributionManagement>
 
    <properties>
        <project.release.version>0.1-SNAPSHOT</project.release.version>
    </properties>
 
    <profiles>
        <profile>
            <id>product</id>
        <properties>
             <project.release.version>0.1</project.release.version>
        </properties>
        </profile>
    </profiles>
</project>
复制代码

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

1、如果在发布时使用mvn deploy -P product的命令,那么会自动使用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文件中做如下配置:

复制代码
<servers>
    <server>
        <id>mzone-release</id>
        <username>deployment</username>
        <password>deployment</password>
    </server>
    <server>
        <id>mzone-snapshot</id>
        <username>deployment</username>
        <password>deployment</password>
    </server>
</servers>
复制代码

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

      我们这里通过profile的定义就可以在发布灵活切换snapshot快照版本和release正式版本了,在被依赖的组件中也可以使用profile来定义在开发阶段使用快照库,在发布阶段使用正式库的功能,只需要在不同的profile中覆盖默认的properties属性值即可
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36630761/article/details/74529134

智能推荐

caffe 学习系列:计算图片的均值以及转化npy格式_均值文件.npy_hjxu2016的博客-程序员宅基地

一般都要计算均值,首先caffe自带的compute_image_mean函数这个函数有两个参数,一个是caffe的lmdb文件,还有一个是生成的binaryproto格式均值文件执行下列.sh脚本#!/usr/bin/env sh# Compute the mean image from the imagenet training lmdb# N.B. this is avail_均值文件.npy

SDL入门教程(十三):2、初识多线程_程序心声的博客-程序员宅基地

作者:龙飞2.1:竞争条件(Race Conditions) 我们在前面将一个普通函数调用转换成了用线程调用,这意味着我们可以“同时”调用两个以上的线程。例如,我们希望在屏幕的另外一个位置也播放这段简单的动画,我们只需要添加一个线程的调用就可以了。int main(int argc ,char* argv[]){ //Create a SDL

Leetcode刷题 2021.03.16_设计一个内存文件系统,模拟以下功能,实现文件系统类_发条橙。的博客-程序员宅基地

Leetcode刷题 2021.03.16Leetcode588 设计内存文件系统Leetcode8 字符串转换整数 (atoi)Leetcode252 会议室Leetcode588 设计内存文件系统设计一个内存文件系统,模拟以下功能:ls: 以字符串的格式输入一个路径。如果它是一个文件的路径,那么函数返回一个列表,仅包含这个文件的名字。如果它是一个文件夹的的路径,那么返回该 文件夹内 的所有文件和子文件夹的名字。你的返回结果(包括文件和子文件夹)应该按字典序排列。mkdir:输入一个当前不存在的_设计一个内存文件系统,模拟以下功能,实现文件系统类

javascript的内存泄漏_es6 内存泄漏_暮志未晚Webgl的博客-程序员宅基地

一、什么是内存泄漏?程序的运行需要内存。只要程序提出要求,操作系统或者运行时(runtime)就必须供给内存。对于持续运行的服务进程(daemon),必须及时释放不再用到的内存。否则,内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。不再用到的内存,没有及时释放,就叫做内存泄漏(memory leak)。有些语言(比如 C 语言)必须手动释放内存,程序员_es6 内存泄漏

移动互联网时代:你的厕所文学是什么?_RabinRow的博客-程序员宅基地

记得我腰挂PP机时。我的厕所文学是《故事会》或《知音》,被里面稀奇古怪乱七八糟的感人故事所激动得忘了身上重任,后来有了手机,还是诺基亚232和3310的时候,我的厕所文学有时候是《读者》。有时候是《南方周末》。读者是一个煽情的杂志。我如今骨子里拥有的一些爱心和感..._移动互联时代的文学

Java程序员应该了解的10个面向对象设计原则_对象可以维护私有信息和过程,而且它们可以任意改变而不影响那些依赖于这个对象的对象_tof21的博客-程序员宅基地

Java程序员应该了解的10个面向对象设计原则面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton、Decorator、Observer这样的设计模式,而不重视面向对象的分析和设计。甚至还有经验丰富的Java程序员没有听说过OOPS和SOLID设计原则,他们根本不_对象可以维护私有信息和过程,而且它们可以任意改变而不影响那些依赖于这个对象的对象

随便推点

[PAT乙级] 1006 换个格式输出整数 (15 分)_pat乙级1006_你愿意和我一起清理内存吗?的博客-程序员宅基地

#include<iostream>#include<string>using namespace std;int main(){ int num=0; cin>>num; int B,S,g;//百位,十位,个位 B = num/100; S = num/10%10; g = num%100%10; ..._pat乙级1006

jQuery练习二:会员信息模块_选择跳水或自由落体的博客-程序员宅基地

一.需求<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> <script src="jquery-3.4.1.min.js"></script> <style> table { width: 820px; margin: 10px; } table tr

PHP——个人信息管理系统_php管理系统_皮蛋瘦肉没有肉的博客-程序员宅基地

楼主近来无事,做了一个个人信息管理系统,希望能给小白一点启发,大神不要吐槽,欢迎技术交流,文明批评。鞋鞋!先贴上数据库结构图表单中有id,用户名,昵称,性别,密码,注册时间,个性签名,头像,详细 共9个字段。个人信息管理的文件结构文件名称描述reg.inc.php注册页面login.inc.php登录_php管理系统

51nod 动态规划教程【矩阵取数】_给定一个n行m列的二维矩阵,矩阵每个位置的数字取值是 java_Yang_Z_H的博客-程序员宅基地

点击打开链接给定一个m行n列的矩阵,矩阵每个元素是一个正整数,你现在在左上角(第一行第一列),你需要走到右下角(第m行,第n列),每次只能朝右或者下走到相邻的位置,不能走出矩阵。走过的数的总和作为你的得分,求最大的得分。输入第1行:N,N为矩阵的大小。(2 第2 - N + 1行:每行N个数,中间用空格隔开,对应格子中奖励的价值。(1 输_给定一个n行m列的二维矩阵,矩阵每个位置的数字取值是 java

使用node.js搭建web服务器_sky-code的博客-程序员宅基地

首先要到http://nodejs.org/下载和安装Node.js。然后,打开终端应用(如果你用的是Windows操作系统,打开Node.js的命令行),输入如下命令:npm install http-server -g最好手动输入这些命令,复制粘贴可能会出错。也可以用管理员身份执行上述命令。对于Linux和Mac操作系统,使用如下命令:sudo npm install http-se...

J2ME上路_bbmyth的博客-程序员宅基地

elcipse3.0 j2me_wireless_toolkit-2_2-ml-windows.exe eclipseme.feature_0.7.0_site.zip 开始关键是把在update里面把eclispeme.feature加进去.然后就可以了按以下步骤进行了. 一、安装和配置准备您需要安装 Ecli

推荐文章

热门文章

相关标签