添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
低调的打火机  ·  pred=scaler.inverse_tr ...·  2 月前    · 
唠叨的硬盘  ·  Python 使用 win32com ...·  7 月前    · 

什么是版本管理

版本管理不是指版本控制,版本管理中说得版本是指构件的版本,而非源码的版本。
例如我有一个java项目,其artifactId为myJavaApp,我们会生成这样一些jar:myJavaApp-1.0-SNAPSHOT.jar,myJavaApp-1.0.jar等,这就是我们今天要介绍的。

java源程序版本管理和jar发布包版本顾名思义是两种不同性质的版本管理。
现在源程序的管理已经有git管理,非常的完善。
jar发布包的管理也有maven管理,也是非常的完善,我们这里主要介绍maven管理jar发布包版本号。

我们使用maven打包时是可以在pom.xml设置版本号的,方式如下:


在pom.xml文件的<version></version>使用第一步配置

<groupId>aaa.bbb</groupId>
<artifactId>ccc</artifactId>
<version>1.1.1</version>

但我们实际工作中往往存在以下问题


1、上面的版本号配置是静态的,可能存在当前版本下修改了多次代码,经过多次打包,但版本号相同。


2、如果上面的版本号是静态配置,无法准确知道是什么时候打包的。

带着上面的问题,我们可以提出一下需求:


1、maven打包是否可以实现动态生成版本号?


2、能否实现根据当前时间生成版本号?


3、如果版本号静态,有没有办法知道是什么时候打包的?

答案是可以的,详细的实施步骤如下:

1、在pom.xml文件的<plugins></plugins>增加插件

并配置变量名 build.time 和日期格式 YYMMddHHmm

</plugins>
	<plugin>
		<groupId>org.codehaus.mojo</groupId>
		<artifactId>build-helper-maven-plugin</artifactId>
		<executions>
			<execution>
				<id>timestamp-property</id>
				<goals>
					<goal>timestamp-property</goal>
				</goals>
			</execution>
		</executions>
		<configuration>
			<name>build.time</name>
			<pattern>YYYYMMddHHmm</pattern>
			<timeZone>GMT+8</timeZone>
		</configuration>
	</plugin>
</plugins>

2、在pom.xml文件的<version></version>使用第一步配置的变量 build.time

<groupId>aaa.bbb</groupId>
<artifactId>ccc</artifactId>
<version>1.1.1-${build.time}</version>

3、在pom.xml文件的引入maven-jar-plugin插件修改MANIFEST.MF 文件的 Implementation-Version 版本号 【通过这个配置,即使maven的version是静态版本号,这里也可以知道jar的打包时间】

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<configuration>
		<archive>
			<manifestEntries>
				<Implementation-Version>1.1.1-${build.time}</Implementation-Version>
			</manifestEntries>
		</archive>
	</configuration>
</plugin>

4、在jar压缩包的MANIFEST.MF 文件 里面可以查看 Implementation-Version

在多个微服务进行 打包 时需要更改每个微服务的 配置 文件才能指定使用哪个 配置 文件, 现在要将 打包 方式变为在 打包 时统一使用哪个名称的 配置 文件并在 打包 的名称后面加上后缀。 1.修改 pom . xml <profiles> <profile> <id>dev</id> <properties> <package.environment>dev&lt SringBoot的概述# SpringBoot 解决上述Spring的缺点 SpringBoot 对上述Spring的缺点进行的改善和优化,基于约定优于 配置 的思想,可以让开发人员不必在 配置 与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了 项目 周期。# SpringBoot 的特点为基于Spring的开发提供更快的入门体验开箱即用,没有代码生成,也无需 XML 配置 。同时也可以修改默认值来满足特定的需求提供了一些大型 项目 中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部 配置 SpringBoot 不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式# SpringBoot 的核心功能起步依赖 起步依赖本质上是一个 Maven 项目 对象模型(Project Object Model, POM ),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。简单的说,起步依赖就是将具备某种功能的坐标 打包 到一起,并提供一些默认的功能。自动 配置 Spring Boot的自动 配置 是一个运行时(更准确地说,是应用程序启动时)的过程,考 Allatori是一个Java 混淆器,它属于第二代混淆器,因此它能够全方位的保护你的知识产权。 Allatori具有以下几种保护方式:命名混淆,流混淆,调试信息混淆,字符串混淆,以及水印技术。对于教育和非商业 项目 来说这个混淆器是免费的。支持war和jar文件格式,并且允许对需要混淆代码的应用程序添加有效 日期 。 有 项目 需要对代码进行保护,比较初级的方案就是对代码进行混淆, 打包 之后的文件进行反编译后,就可以看到效果。此外,使用Allatori打的包大小也会小一点。 一个很普通的 maven 工程,不同的是在根目录下加入Allatori的jar包。 下面我们来看看 pom . xml 文件: <project xml ns="http:// maven .apache.org/ POM /4.0.0" xml ns:xsi="http://www.w3.org/2001/ XML Schema-instance" xsi:schemaLocation="http:// maven .apache.org/ POM /4.0.0 http:// maven .ap mvn 打包 时添加 日期 参数 maven 打包 时想添加 日期 参数,如:将"xxx.jar" 打包 为"xxx-yyyyMMdd.jar"这样的格式。如何 实现 ? 自 Maven 2.1.0-M1版本之后,通过设置属性值: maven .build.timestamp.format指定具体的 日期 格式,如: <project>   <properties>     < maven .build.timestamp.format>yyyy-MM-dd'T'HH:mm:ss'Z'</ 这篇文章首先介绍了在 SpringBoot 中如何获得 项目 的编译 时间 和版本号,并向外提供接口,然后介绍了介绍了新版 maven 获得 时间 戳时区错误的解决方案,最后介绍了把 时间 戳加到包名的两种方法。 SpringBoot 项目 获得编译 时间 戳和版本号,然后提供接口大概分为以下步骤:在 pom 文件中获取 maven 的编译 时间 配置 pom ,用 maven 中的属性渲染资源文件application.yml提供接口 Maven 中... 导入doc文件夹里面的 springboot v2.sql到数据库 确认自己的mysql版本 进行修改jar 在 pom . xml 73-84行 修改application-dev.yml 里面自己数据库版本对应的jdbc链接 正常启动run Springboot Swagger2Application.java 打包 发布编译流程: maven 编译安装 pom . xml 文件即可 打包 成war 登陆地址: 服务器:http://47.99.218.99:8080/ springboot _v2/ 该数据库只有查询权限跟新增权限,所以修改以及删除会报错 本地 http://localhost:8080 默认帐号密码: admin/admin swagger http://localhost:8080/swagger-ui.html Springboot Start 启动类 <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- servlet、jsp、jstL所需要的依赖end--> <!--处理 日期 格式--> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.9.9</version> </dependency> <!--mybatis分页依赖 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</version> </dependency> <!-- apache用于MD5加密 --> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.10</ver <properties> < maven .build.timestamp.format>MMddHHmmss</ maven .build.timestamp.format> </properties> 在build中定义包名的格式 <build> <finalName> ${projec