Maven+Nexus进行SCM发布

scm-version-maven-plugin:基于 scm 分支、变更集和时间戳生成版本标识符的 Maven 插件 scm-version-maven-plugin 基于 scm 分支、变更集和时间戳生成版本标识符的 Maven 插件 立即下载

    对于java的一些公用依赖包,我们通常需要发布在私有的nexus平台中,以便其他项目组使用。

    1)我们首先需要搭建自己的nexus平台。

    2)用户授权,指定用户具有release权限。

    3)调整maven中的setting.xml文件。

    4)调整project中的pom.xml文件。

 

1、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">

  <pluginGroups>
  </pluginGroups>

  <proxies>
  </proxies>

  <servers>
   	<server>
      <id>releases</id>
      <username>admin</username>
      <password>admin</password>
    </server>
	<server>
      <id>snapshots</id>
      <username>admin</username>
      <password>admin</password>
    </server>
  </servers>

  <mirrors>
  </mirrors>

 <profiles>
    	<profile>
        	<id>nexus</id>
        	<repositories>
            	<repository>
                	<id>nexus_public</id>
                	<name>Team Repository</name>
                	<url>http://nexus.test.com.cn/nexus/content/groups/public/</url>
                	<releases>
                    	<enabled>true</enabled>
                	</releases>
                	<snapshots>
                   		<enabled>true></enabled>
                   		<updatePolicy>always</updatePolicy>
                		<checksumPolicy>fail</checksumPolicy>
                	</snapshots>
            	</repository>
            	<repository>
            		<id>snapshots</id>
            		<url>http://nexus.test.com.cn/nexus/content/repositories/snapshots</url>
        		</repository>
        	</repositories>

        	<pluginRepositories>
            	<pluginRepository>
                	<id>nexus_public</id>
            		<url>http://nexus.test.com.cn/nexus/content/groups/public/</url>
            		<releases>
                		<enabled>true</enabled>
            		</releases>
            		<snapshots>
                		<enabled>true</enabled>
            		</snapshots>
            	</pluginRepository>
            	<pluginRepository>
            		<id>central</id>
            		<name>Central Repository</name>
            		<url>https://repo.maven.apache.org/maven2</url>
            		<releases>
                		<updatePolicy>never</updatePolicy>
            		</releases>
            		<snapshots>
                		<enabled>false</enabled>
            		</snapshots>
        		</pluginRepository>
        	</pluginRepositories>
    	</profile>
    </profiles>
    <activeProfiles>
        <activeProfile>nexus</activeProfile>
    </activeProfiles>
</settings>

 

    <server>标签中配置nexus服务器端用户授权信息,通常我们需要配置两个:releases和snapshots,当然如果你的jar不需要进行snapshots发布,也可以不用配置。<profile>中配置project中引用jar时需要访问nexus服务器的方式。

 

2、pom.xml样例

 

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <description>jdbc utils</description>

    <groupId>com.test.utils</groupId>
    <artifactId>jdbc-utils</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>jdbc-utils</name>

    <properties>
		<jedis.version />
        <java.version>1.8</java.version>
        <org.springframework-version>4.3.3.RELEASE</org.springframework-version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <scm>
        <developerConnection>scm:git:ssh://git@code.test.com.cn:3590/yourname/jdbc-utils.git</developerConnection>
        <url>scm:git:ssh://git@code.test.com.cn:3590/yourname/jdbc-utils.git</url>
        <connection>scm:git:ssh://git@code.test.com.cn:3590/yourname/jdbc-utils.git</connection>
	<!-- 此git地址上生成tag标签名,在release:prepare时会提示输入,此处可以不用配置 -->
        <tag>jdbc-utils-1.0</tag>
    </scm>
    <distributionManagement>
        <!-- if you use public-release -->
        <repository>
            <id>releases</id>
            <name>releases</name>
            <url>http://nexus.test.com.cn/nexus/content/repositories/releases/</url>
        </repository>
        <!-- if you use snapshots. -->
        <snapshotRepository>
            <id>snapshots</id>
            <name>snapshots</name>
            <url>http://nexus.test.com.cn/nexus/content/repositories/snapshots</url>
        </snapshotRepository>
    </distributionManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${org.springframework-version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.0.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>
            </plugin>
        </plugins>
    </build>
</project>

 

    1)项目的版本需要以“-SNAPSHOT”结尾,否则在release时将会抛出:

You don't have a SNAPSHOT project in the reactor projects list. 

 

    2)项目中需要配置“maven-release-plugin”,否则将无法执行命令,且此plugin的版本最好是最新的、且与maven的版本是兼容的。

    3)<scm>标签中配置你的git地址,而且具有此git地址的“push”等权限。

    4)<distributionManagement>标签中,配置需要进行代码release的地址,包括“releases”和“snapshots”(可选),<id>的值必须与setting.xml中<server>.<id>对应。此处需要非常注意的是:<server>中配置的用户需要具有pom.xml中两个地址的代码提交权限。否则将会抛出:

Return code is: 401, ReasonPhrase: Unauthorized.

 

    5)为了避免不必要的问题,我们还需要将pom.xml中对应的两个url的访问权限按下图所示进行修改(在nexus平台上):

 

 

    如果没有修改,极有可能抛出:

Return code is: 400, ReasonPhrase: Bad Request.

 

3、执行:

    对于SCM发布,我们通常关注三个指令(参见maven-release-plugin):

    1)mvn release:clean:清理release过程中产生的临时文件,通常当我们在release执行的任何过程中出现错误,或者放弃release时,执行此命令,类似于一个“回滚”的操作。

    2)mvn release:rollback:回滚操作,当release操作执行一部分之后,无论是否发生错误,如果你希望回滚到release之前的代码状态,可以执行此操作。(注意,release:prepare阶段执行过程中,会修改pom.xml文件,rollback即表示回滚到prepare之前的状态)

    3)mvn release:prepare:release的准备阶段,也是正常流的第一个操作,此阶段将会提示操作者本次release的版本号、下一次开发的SNAPSHOT版本号、生成tag的名称等,我们通常是一路回车,一切操作保持默认即可。

    4)mvn release:perform:执行release远程发布,执行成功后,我们应该会在nexus响应的url中查看到我们的jar列表。

    5)每次发布,都会在scm指定的git地址上生成一个tag,这个tag号与你的version保持一致,如果你意外出错,重新release相同版本时可能不会成功,因为此tag已经存在,此时你需要执行“git tag -d <你的tag名称>”来删除tag才能继续。(可以通过“git tag”查看tag的列表)

  • 大小: 33.7 KB
uniapp - Invalid value “iife” for option “output.format” - UMD and IIFE output formats are not suppo Invalid value “iife” for option “output.format” - UMD and IIFE output formats are not supported for code-splitting builds. uniapp 编译报错,vite vue3 Hbuilder 中编译报错,uniapp 打包 App 报错(vue3)hbuilder提示错误,uniapp运行到手机/模拟器 App 报错(vue3)uniapp项目启动报错,如何解决这个问题,安卓app,苹果app 阅读详情

相关推荐

基于 Python 的 LIF 模型:探索神经元同步与小世界网络

首先,我们定义了一个LIFNeuronself.soma.L = self.soma.diam = 12.6157 # 固定神经元形状self.cm = cm # 电容self.V_rest = V_rest # 静息电位self.V = V_rest # 初始化膜电位在初始化过程中,每个神经元被赋予初始的静息电位,并且其膜电位会在后续的模拟过程中动态变化。

qq_36224726的博客 1424

Maven报 You don‘t have a SNAPSHOT project in the reactor projects list

使用 mvn release:clean release:prepare 报如下错误: You don't have a SNAPSHOT project in the reactor projects list 原因是在 pom.xml 文件中没有在 <version/> 标签版本号后缀没加上 -SNAPSHOT <version>0.0.19</version> 改成如下即可: <version>0.0.19-SNAPSHOT</versi

2603

SAP中常见的Debug方式

原文链接:https://mp.weixin.qq.com/s/wT4kThFKYV0PQYhCqpXRWg 大家可以关注我个人公众号,所有分享内容,会在公众号第一时间推送,且阅读排版更好。 愿大家的学习,轻松且愉快。 如果大家觉得有用,希望转发关注,谢谢 导读 SAP系统在企业的应用时,都不会只使用标准功能。 通常情况下,基于特殊的行业需求,以及某些业务部门的管理需求等,都会额外开发出一些增强,报表,对话功能,接口等,从而保证系统的正常运转。 标准知识的逻辑,我们...

Kerwin-G的博客 1万+

Github开源Java项目(Disconf)上传到Maven Central Repository方法详细介绍

最近我做了一个开源项目 Disconf:Distributed Configuration Management Platform(分布式配置管理平台) ,简单来说,就是为所有业务平台系统管理配置文件的平台系统。更详细的介绍,请看项目主页。 项目是用Java写的,Maven管理的,那么,自然而然,整个项目应该以Maven仓库POM方式暴露给用户来使用。因此,这两天我一直在折腾Maven...

anyi5187的博客 274

告别深度学习!用5个麦克风搞定多说话人分离:ReTM算法保姆级教程

本文详细介绍了ReTM算法,这是一种无需深度学习、仅需5个麦克风即可实现多说话人语音分离的创新信号处理方法。它通过估计相对传递矩阵,利用空间物理信息在混响环境中分离语音,具有数据需求低、计算复杂度小、无需先验几何信息等优势,特别适合嵌入式设备和资源受限场景。

desk3的博客 157

一种基于OpenPose和DNN的跌倒检测软件系统(中文&英文)

学习并实现一种跌倒检测模型,此模型基于OpenPose实现逐帧人体姿态检测,使用DNN识别人体动作。检测方式有在线与离线两种,本文主要测试了离线模式,测试效果较好。

Tongzhou_Li的博客 2645

[ERROR] Could not find the selected project in the reactor: xxx.xxx:xxx @

文章目录错误描述解决方案 错误描述 Jenkins进行服务部署过程中打包报错 [ERROR] [ERROR] Could not find the selected project in the reactor: org.example:cloud-auth @ [ERROR] Could not find the selected project in the reactor: org.example:cloud-auth -> [Help 1] [ERROR] [ERROR] To see

qq_1801743621的博客 1万+

Labview实现服务器(server)与多客户端(clients)通信

服务器可以接收多个客户端发送的消息,并显示消息来源。 服务器可以发送消息到指定客户端 客户端可以自动连接服务器,断连后重连 客户端可以发送消息到服务器,可接收服务器消息 类似框架可以用做中央服务器及客户端项目

u013809089的博客 7976

Maven发布到Nexus

1.概述 在本系列的上一篇文章中,我们将Maven设置为Nexus的部署过程 。 在本文中,我们将在项目的pom以及Jenkins作业中使用Maven配置发布过程 。 2. 为了使Maven能够发布到Nexus Repository Server,我们需要通过distributionManagement元素定义存储库信息: <distributionManagement>...

最佳 Java 编程 455

802.1x之EAP-TLS测试方法

CA证书一般是由权威的认证机构发出,用来验证该机构签名的证书,持有CA证书的设备可以验证对端的证书是否由自己信任的机构颁发的。在我们内部使用证书时,我没可以自己充当CA认证机构,管理私钥和CA证书,使用他们签名服务器、客户端证书。2、使用证书请求文件server_csr.pem、CA私钥、CA公钥生成服务器证书(正常情况下自己不拥有CA私钥,是把证书请求文件发给认证机构,由认证机构返回证书)进行802.1x EAP-TLS认证时需要IPC、服务器分别存储CA证书、设备证书、私钥,通过交换证书实现身份验证。

写作是为了更好的思考 2164

【RT-DETR实战】159、改进九:知识蒸馏从YOLOv8教师模型学习

摘要: 本文探讨了知识蒸馏在RT-DETR目标检测模型中的应用挑战与实践经验。作者以YOLOv8作为教师模型,针对特征对齐、损失函数设计和训练策略等核心问题,提出了适配器模块、动态权重调整和多阶段训练等优化方案。文章重点分析了教师模型选择、特征图匹配、损失函数组合等关键环节的实战技巧,并总结了蒸馏模型部署时的注意事项。通过实验验证,作者指出知识蒸馏应关注模型"思维方式"的迁移而非简单特征复制,并强调合理评估指标和教师模型选择的重要性。最后,作者分享了技术迭代中的边际效应认知,为工业场景下的模型优化提供了实用

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 268

Maven相关博客URL

Maven+Nexus进行SCM发布 https://www.iteye.com/blog/shift-alt-ctrl-2333105

JayXu's Blog 154

操作系统 | 知识梳理 | 复习(上)

操作系统复习

知识库搭建ing 3476

maven发布Release版本之maven-release-plugin插件配置

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34061482的博客 841

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

maven发布项目到中央仓库

maven发布自己的项目到中央仓库 1.注册sonatype网站账号 https://issues.sonatype.org/secure/Signup!default.jspa 注册成功之后然后直接登录就行了 2.新建新的问题(issues) 这个组id,可以是io.github.你的GitHub用户名 或者你的域名 反着来 打个比方,如果是 你的域名是 mhb.icu 那么就是 icu.mhb 然后就等待工作人员评论 等到工作人员说 这种说认证通过了,可以去上传jar包到中央仓库了 3.配置p

博博的博客 721

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Maven_Release_Plugin配置

操作方式说明 1.在文件系统中,运行相应的命令如mvn release:clean,mvn release:prepare,mvn release:perform 等都要以mvn开头 后面接相应的命令操作   2.在IDE中,我们在maven的运行中,只需要输入release:clean,release:prepare等就可以了,要去掉mvn   命令可以连接起来一起用,如 mvn ...

zjwxiaowei12的专栏 290

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

HoRain云--Maven 自动化部署

本文介绍了如何通过自动化工具解决多团队协作中手动部署易出错的问题。主要方案包括:1)使用Maven构建和发布项目;2)通过SubVersion管理源代码;3)使用Nexus等仓库管理二进制文件。重点说明了如何配置pom.xml文件,特别是SCM、repository和maven-release-plugin插件的设置。文章详细解释了maven-release-plugin插件的四个关键命令:clean、rollback、prepare和perform,并提供了具体的命令行操作示例。该方案能有效避免人为操作错

2401_86544677的博客 304

Maven release插件打tag,发布release版到nexus

一、背景  SNAPSHOT为快照版,不稳定,开发时使用的版本,当测试稳定后,可发布RELEASE版 下面介绍下,本次实验环境: Maven 3.3.1 nexus 2.11.1 Subversion 1.8.x 注意:SVN Connector与Subversion(主要是因为BIN目录包含了一些SVN客户端的命令程序)版本需一致 Eclipse Mar(目前发现SVN的图...

Jay Chang 3388

如何将BufferTextInputLayout发布到Maven Central:完整部署指南

BufferTextInputLayout是一个优秀的Android自定义输入布局组件,它扩展了Android Design Support Library中的TextInputLayout,提供了更灵活的字符计数器显示功能。对于Android开发者来说,将自己的开源库发布到Maven Central是分享给全球开发者的最佳方式。本文将为你提供完整的BufferTextInputLayout发布到

gitblog_00502的博客 518

Maven系列 8.Maven发布

8.Maven发布   与Nexus集成   存储库管理器是企业中Maven部署的关键部分。存储库管理器充当公共存储库的代理,促进工件共享和团队协作,确保构建稳定性,并实现企业中使用的工件的管理。   Nexus是来自Sonatype的一个流行的开源存储库管理器。它是一个Web应用程序,允许您维护内部存储库和访问外部存储库。它允许通过单个URL对存储库进行分组和访问。这使得存储库管理员可以在

mobile android的博客 599

Centos使用Nexus3.X搭建Maven私服

一:基本概念 本地仓库: Maven一个很突出的功能就是jar包管理,一旦工程需要依赖哪些jar包,只需要在Maven的pom.xml配置一下,该jar包就会自动引入工程目录。初次听来会觉得很神奇,下面我们来探究一下它的实现原理。 首先,这些jar包肯定不是没爹没娘的孩子,它们有来处,也有去处。集中存储这些jar包(还有插件等)的地方被称之为仓库(Repository)。 不管这些jar包从哪里来的,必须存储在自己的电脑里之后,你的工程才能引用它们。类似于电脑里有个客栈,专门款待这些远道而...

老虎三太子的博客 353

Maven 环境配置、安装、 部署、 本地仓库、 SCM

Maven笔记                                                                                                目录 1.1.         下载地址...2 1.2.         安装...3 1.3.         简单例子...3 1.3.1.        建立Maven

易大山的专栏 2427

clap typed-derive 示例深度解析:用自定义 TypedValueParser 解析二义性版本号参数

本篇文章以 clap 仓库中的 [typed-derive 示例](https://link.gitcode.com/i/63c597af6f45ef06744f1ef57db6a80a) 的 `custom` 子命令为对象,深入讲解如何为一个"既接受枚举值、又接受自由格式版本号"的 CLI 参数类型手写自定义 `TypedValueParser`。读完本文,你将掌握 clap 中 `ValueP

gitblog_00451的博客 326

Maven自动部署(SCM-SVN/Git)(maven-scm-plugin/maven-release-plugin插件的使用)

以下内容引用自https://ayayui.gitbooks.io/tutorialspoint-maven/content/book/maven_deployment_automation.html: 注意:Maven自动构建和自动部署的区别在于,构建只是编译代码阶段,而部署是一整套代码获取到编译再到打包发布的完整流程。 提示:其实本文提到的场景可能有一些矛盾,但只是出于演示效果,...

angou6476的博客 494

Maven release Project to Nexus

准备 首先确认你已经安装了Nexus、Maven、SVN 配置Maven 开打.m2/setting.xml 配置如下:  <settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=

dhmj2ee的专栏 1787
上一篇: JDBC查询超时时间设置
下一篇: nginx线程池模式探讨
shift_alt_ctrl
博客等级 码龄10年 0粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值