以编程方式获取项目的Maven版本

时间:2012-01-06 21:04:05

标签: java maven

如何以编程方式获取项目的Maven版本?

换句话说:

static public String getVersion()
{
    ...what goes here?...
}

例如,如果我的项目会生成jar CalculatorApp-1.2.3.jar,我希望getVersion()返回1.2.3

2 个答案:

答案 0 :(得分:19)

使用以下内容在version.prop中创建文件src/main/resources

version=${project.version}

将以下内容添加到项目的pom中:

<build>
...
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>**/version.prop</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <excludes>
                <exclude>**/version.prop</exclude>
            </excludes>
        </resource>
    </resources>
...
</build>

添加以下方法:

public String getVersion()
{
    String path = "/version.prop";
    InputStream stream = getClass().class.getResourceAsStream(path);
    if (stream == null)
        return "UNKNOWN";
    Properties props = new Properties();
    try {
        props.load(stream);
        stream.close();
        return (String) props.get("version");
    } catch (IOException e) {
        return "UNKNOWN";
    }
}

P.S。在此处找到了大部分此解决方案:http://blog.nigelsim.org/2011/08/31/programmatically-getting-the-maven-version-of-your-project/#comment-124

答案 1 :(得分:0)

对于jar文件,您将MANIFEST.MF作为将实现版本放在那里的默认位置。 Maven支持像这样构建jar文件。

另见 How do I add an Implementation-Version value to a jar manifest using Maven?