如何以编程方式获取项目的Maven版本?
换句话说:
static public String getVersion()
{
...what goes here?...
}
例如,如果我的项目会生成jar CalculatorApp-1.2.3.jar
,我希望getVersion()
返回1.2.3
。
答案 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?