取得maven工程的版本号方法之一
By:Roy.LiuLast updated:2015-06-09
当我们在package一个maven工程的时候,会自动生成一个pom.properties文件,这个文件里面包含了version,artifactid,groupid 等信息。有一个方法可以在运行时去取得这些信息:
仅此而已?当然不是。在默认情况下maven war plugin将把所有的class 文件打包到WEB-INF/classes目录下, 而pom.properties 文件是在META-INF目录下, 他们在同一级目录下, 而不是在 WEB-INF/classes/META-INF 目录下,所以上面的代码是找不到pom.properties 文件的,但是还有解决办法:
那就是修改pom.xml 文件,这样配置:
他的作用就是将这些class文件,打成 jar 文件,然后放到 WEB-INF/lib 目录里面去, 同样pom.properties文件也会被打包进去,这样上面的方法就能使用了。这只是其中的方法之一,还有另外一种办法,利用maven的生命周期,在编译之前动态生成java代码。有空再测试.
public class Application { private String version; public String getVersion() { if (version == null) { String res = "META-INF/maven/myapp/pom.properties"; URL url = Thread.currentThread().getContextClassLoader().getResource(res); if (url == null) { version = "SNAPSHOT." + Utils.timestamp(); } else { Properties props = Utils.loadProperties(res); version = props.getProperty("version"); } } return version; } }
仅此而已?当然不是。在默认情况下maven war plugin将把所有的class 文件打包到WEB-INF/classes目录下, 而pom.properties 文件是在META-INF目录下, 他们在同一级目录下, 而不是在 WEB-INF/classes/META-INF 目录下,所以上面的代码是找不到pom.properties 文件的,但是还有解决办法:
那就是修改pom.xml 文件,这样配置:
org.apache.maven.plugins maven-war-plugin 2.6 true
他的作用就是将这些class文件,打成 jar 文件,然后放到 WEB-INF/lib 目录里面去, 同样pom.properties文件也会被打包进去,这样上面的方法就能使用了。这只是其中的方法之一,还有另外一种办法,利用maven的生命周期,在编译之前动态生成java代码。有空再测试.
From:一号门
Previous:徒步,仙人掌大峡谷
COMMENTS