取得maven工程的版本号方法之一

摘要: 当我们在package一个maven工程的时候,会自动生成一个pom.properties文件,这个文件里面包含了version,artifactid,groupid 等信息。有一个方法可以在运行时去取得这些信息:代码片段, 请查看文章详情 ...

当我们在package一个maven工程的时候,会自动生成一个pom.properties文件,这个文件里面包含了version,artifactid,groupid 等信息。有一个方法可以在运行时去取得这些信息:

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代码。有空再测试.

上一篇: 徒步,仙人掌大峡谷
下一篇: django.db.utils.OperationalError: (1068, 'Multiple
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号