什么是版本管理
版本管理不是指版本控制,版本管理中说得版本是指构件的版本,而非源码的版本。
例如我有一个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<
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