如何以編程方式獲取項目的Maven版本?以編程方式獲取項目的Maven版本
換句話說:
static public String getVersion()
{
...what goes here?...
}
例如,如果我的項目將產生的jar CalculatorApp-1.2.3.jar
,我想getVersion()
返回1.2.3
。
如何以編程方式獲取項目的Maven版本?以編程方式獲取項目的Maven版本
換句話說:
static public String getVersion()
{
...what goes here?...
}
例如,如果我的項目將產生的jar CalculatorApp-1.2.3.jar
,我想getVersion()
返回1.2.3
。
在src/main/resources
使用以下內容創建文件version.prop
:
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";
}
}
附:在這裏找到這個解決方案的大部分:http://blog.nigelsim.org/2011/08/31/programmatically-getting-the-maven-version-of-your-project/#comment-124
你的意思是在一個插件,或在應用程序本身? – 2012-01-06 21:09:48
你打算如何使用maven版本?如果需要在構建過程中將信息包含在某個文件中,則可以使用[build-helper-maven-plugin](http://mojo.codehaus.org/build-helper-maven-plugin/maven -version-mojo.html),它會給你的Maven版本。 – CoolBeans 2012-01-06 21:11:37
我可能誤解了你的問題。如果你想獲得你的項目的版本(不是像我之前的評論那樣的maven版本),那麼請看一看[這裏](http://blog.nigelsim.org/2011/08/31/programmatically-getting-the -maven版本 - 的 - 你的項目/)。 – CoolBeans 2012-01-06 21:13:02