在Eclipse中运行时从pom获取Maven项目版本和工件ID
问题内容:
当我遇到这个问题在运行时获取Maven工件版本时,我一直在寻找如何从maven
pom或清单中获取应用程序名称(工件ID)和版本。
当我打包项目时,上面的内容对我有用,但是当我尝试使用eclipse运行程序时,似乎什么也没用。我在构建时尝试使用.properties方法,因为我认为这与包无关,但仍然没有得到结果。如果有人对这个问题有想法或解决方案,将不胜感激。
我的最后一次尝试是在下面。打包(有效)时使用清单,并在Eclipse中运行时尝试获取.properties文件。
String appVersion = getClass().getPackage().getImplementationVersion();
if(appVersion == null || "".equals(appVersion)) {
appVersion = Glob.getString(appVersion);
if(appVersion == null || "".equals(appVersion)) {
System.exit(0);
}
}
问题答案:
创建一个属性文件
src/main/resources/project.properties
具有以下内容
version=${project.version}
artifactId=${project.artifactId}
现在打开Maven资源过滤
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
以便将该文件处理为
target/classes/project.properties
内容与此相似
version=1.5
artifactId=my-artifact
现在,您可以读取此属性文件以获取所需的内容,并且此属性每次都可以工作。
final Properties properties = new Properties();
properties.load(this.getClassLoader().getResourceAsStream("project.properties"));
System.out.println(properties.getProperty("version"));
System.out.println(properties.getProperty("artifactId"));