欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解SpringBoot獲得Maven-pom中版本號(hào)和編譯時(shí)間戳

 更新時(shí)間:2020年01月10日 09:14:32   作者:zhaodongxx  
這篇文章主要介紹了詳解SpringBoot獲得Maven-pom中版本號(hào)和編譯時(shí)間戳,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

這篇文章首先介紹了在SpringBoot中如何獲得項(xiàng)目的編譯時(shí)間和版本號(hào),并向外提供接口,然后介紹了介紹了新版maven獲得時(shí)間戳?xí)r區(qū)錯(cuò)誤的解決方案,最后介紹了把時(shí)間戳加到包名的兩種方法。

SpringBoot項(xiàng)目獲得編譯時(shí)間戳和版本號(hào),然后提供接口大概分為以下步驟:

  • 在pom文件中獲取maven的編譯時(shí)間戳
  • 配置pom,用maven中的屬性渲染資源文件application.yml
  • 提供接口

Maven中獲得編譯時(shí)間

在 pom文件properties 中添加兩個(gè)屬性

<properties>
 <!--maven.build.timestamp保存了maven編譯時(shí)間戳-->
 <timestamp>${maven.build.timestamp}</timestamp>
 <!--指定時(shí)間格式--> 
 <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
</properties>

用Maven屬性渲染application.yml

在pom文件build中配置

<build>
 <resources>
  <resource>
   <directory>src/main/resources</directory>
   <filtering>true</filtering>
  </resource>
 </resources>
</build>

在application.yml中配置

不能使用${}

app:
 version: @project.version@
 build:
 time: @timestamp@

提供接口

創(chuàng)建AppController,提供接口 Get /app

package cn.yshow.modules.sys.controller;

import cn.yshow.common.utils.restResult.RestResult;
import cn.yshow.common.utils.restResult.ResultGenerator;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * @author zhaod zhaodongxx@outlook.com
 * @version v1.0
 * @since 2018/12/16 16:19
 */
@Slf4j
@RestController
@RequestMapping("/app")
public class AppController {
 /**
  * 當(dāng)前版本
  */
 @Value("${app.version}")
 private String version;
 /**
  * 打包時(shí)間
  */
 @Value("${app.build.time}")
 private String buildTime;

 @GetMapping
 public RestResult uploadImg() {
  Map<String,String> ret = new HashMap<>();
  ret.put("version",version);
  ret.put("buildTime",buildTime);
  
  //RestResult是我封裝的返回對(duì)象
  return ResultGenerator.genSuccessResult(ret);
 }
}

測(cè)試

用YAPI測(cè)試如下

maven.build.timestamp時(shí)區(qū)錯(cuò)誤解決方案

在Maven 3.2.2+中, maven.build.timestamp已被重新定義,顯示UTC中的時(shí)間,比中國(guó)時(shí)間慢8個(gè)小時(shí)??梢允褂貌寮uild-helper-maven-plugin獲得本時(shí)區(qū)的時(shí)間

在plugins塊添加插件,這個(gè)配置與官網(wǎng)不一樣,按照官網(wǎng)的配置方式會(huì)報(bào)錯(cuò)

<project>
 <build>
  <!--指定包名 -->
  <finalName>
   ${project.artifactId}-${project.version}-${build.time}
  </finalName>
  <plugins>
   <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.8</version>
    <executions>
     <execution>
      <id>timestamp-property</id>
      <goals>
       <goal>timestamp-property</goal>
      </goals>
     </execution>
    </executions>
    <configuration>
     <name>build.time</name>
     <pattern>yyyy-MM-dd HH:mm</pattern>
     <timeZone>GMT+8</timeZone>
    </configuration>
   </plugin>
  </plugins>
 </build>
</project> 

經(jīng)過(guò)上述處理后,屬性${build.time}已經(jīng)代表GMT-8時(shí)區(qū)的時(shí)間

application.yml配置如下

app:
 version: @project.version@
 build:
 time: @build.time@

IDEA 編譯項(xiàng)目不會(huì)調(diào)用 maven 生命周期,導(dǎo)致安裝的 plugin 不被執(zhí)行。雖然 maven 自帶變量可以被替換,但是自定義變量卻不會(huì)被替換。

可以將 IDEA 的 Build 與 maven goal 綁定起來(lái),在 build 之前執(zhí)行 maven goal,IDEA 右側(cè) Maven Projects -> LifeCycle -> compile 勾選 Execute After Build和Execute After Rebuild ,如下圖

把時(shí)間戳加到包名

兩種方法不要重復(fù),否則

方法一:把時(shí)間戳加到版本號(hào)

<project>
 <versioin>
  0.0.5.${build.time}
 </version>
</project>

方法二:把時(shí)間戳直接加到包名

<project>
 <build>
  <finalName>
   ${project.artifactId}-${project.version}-${build.time}
  </finalName>
 </build> 
 
</project>

參考資料

maven 打包時(shí)間戳問(wèn)題

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java壓縮文件ZIP實(shí)例代碼

    Java壓縮文件ZIP實(shí)例代碼

    這篇文章主要介紹了Java壓縮文件ZIP實(shí)例代碼,有需要的朋友可以參考一下
    2013-12-12
  • 詳細(xì)總結(jié)IDEA中打jar包的兩種方式

    詳細(xì)總結(jié)IDEA中打jar包的兩種方式

    發(fā)現(xiàn)有很多小伙伴都不會(huì)用IDEA打jar包,今天給大家詳細(xì)總結(jié)了兩種IDEA打jar包的方式,對(duì)正在學(xué)習(xí)IDEA使用的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • Spring @Order注解使用詳解

    Spring @Order注解使用詳解

    注解@Order或者接口Ordered的作用是定義Spring IOC容器中Bean的執(zhí)行順序的優(yōu)先級(jí),而不是定義Bean的加載順序,Bean的加載順序不受@Order或Ordered接口的影響
    2022-08-08
  • SpringBoot學(xué)習(xí)之Json數(shù)據(jù)交互的方法

    SpringBoot學(xué)習(xí)之Json數(shù)據(jù)交互的方法

    這篇文章主要介紹了SpringBoot學(xué)習(xí)之Json數(shù)據(jù)交互的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • SpringBoot進(jìn)行參數(shù)校驗(yàn)的方法詳解

    SpringBoot進(jìn)行參數(shù)校驗(yàn)的方法詳解

    在日常的接口開發(fā)中,為了防止非法參數(shù)對(duì)業(yè)務(wù)造成影響,經(jīng)常需要對(duì)接口的參數(shù)進(jìn)行校驗(yàn)。本文通過(guò)示例詳細(xì)講解了SpringBoot如何進(jìn)行參數(shù)校驗(yàn)的,感興趣的可以學(xué)習(xí)一下
    2022-04-04
  • 淺談mybatis中的#和$的區(qū)別 以及防止sql注入的方法

    淺談mybatis中的#和$的區(qū)別 以及防止sql注入的方法

    下面小編就為大家?guī)?lái)一篇淺談mybatis中的#和$的區(qū)別 以及防止sql注入的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • DTO 實(shí)現(xiàn) service 和 controller 之間值傳遞的操作

    DTO 實(shí)現(xiàn) service 和 controller 之間值傳遞的操作

    這篇文章主要介紹了DTO 實(shí)現(xiàn) service 和 controller 之間值傳遞的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • MyBatis實(shí)現(xiàn)高級(jí)映射的示例代碼

    MyBatis實(shí)現(xiàn)高級(jí)映射的示例代碼

    高級(jí)映射主要還是映射,只是映射中的數(shù)據(jù)關(guān)系復(fù)雜了,其中就包括一對(duì)一、一對(duì)多、多對(duì)多的關(guān)系,本文主要介紹了MyBatis實(shí)現(xiàn)高級(jí)映射的示例代碼,感興趣的可以了解一下
    2024-06-06
  • springboot項(xiàng)目部署在linux上運(yùn)行的兩種方式小結(jié)

    springboot項(xiàng)目部署在linux上運(yùn)行的兩種方式小結(jié)

    這篇文章主要介紹了springboot項(xiàng)目部署在linux上運(yùn)行的兩種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 用java WebSocket做一個(gè)聊天室

    用java WebSocket做一個(gè)聊天室

    這篇文章主要為大家詳細(xì)介紹了用java WebSocket做一個(gè)聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10

最新評(píng)論