分享一个小技巧,我们发布的时候需要确认发布的版本是不是最新打包的.可以利用自定义MANIFEST.MF来解决.总的思路就是在maven打包的时候自动加入版本信息打在MANIFEST.MF中,然后暴露Http接口来查看对应的版本号.
首先修改pom.xml,如果是war包就包插件换成maven-war-plugin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <index>true</index> <manifest> <addClasspath>true</addClasspath> </manifest> <manifestEntries> <version>${myversion}</version> </manifestEntries> </archive> </configuration> </plugin> </plugins> </build>
|
然后打包的时候加入myversion参数
1
| mvn clean package -Dmyversion=20191111
|
这样在jar包中的META-INF/MANIFEST.MF中就有version字段了.读取的话可以使用jcabi-manifests,当然自己写也很简单
1 2 3 4 5
| <dependency> <groupId>com.jcabi</groupId> <artifactId>jcabi-manifests</artifactId> <version>0.7.5</version> </dependency>
|
如果是war包的话,可以看看这篇文章
1 2 3 4 5
| ServletContext application = getServletConfig().getServletContext(); InputStream inputStream = application.getResourceAsStream("/META-INF/MANIFEST.MF"); Manifest manifest = new Manifest(inputStream);
manifest.getMainAttributes().getValue("Version");
|
这样就能用来check发布到线上的版本是不是刚刚打出来的版本.毕竟发布系统有时候也会有bug的.^_^