IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

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

    asuncool@gmail.com(yihaomen)发表于 2015-06-09 21:29:58
    love 0
    当我们在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代码。有空再测试.


沪ICP备19023445号-2号
友情链接