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

当我们在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 文件,这样配置:
程序代码 程序代码

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <archiveClasses>true</archiveClasses>
    </configuration>
</plugin>


他的作用就是将这些class文件,打成 jar 文件,然后放到 WEB-INF/lib 目录里面去, 同样pom.properties文件也会被打包进去,这样上面的方法就能使用了。这只是其中的方法之一,还有另外一种办法,利用maven的生命周期,在编译之前动态生成java代码。有空再测试.

除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: maven
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.