我想访问存储在jar文件中的实现版本之类的信息。这在任何技术中似乎都很有效,但总是基于类加载器。
如果我想在maven环境中进行测试,当然不能使用surefire插件,因为这是在打包到jar之前。因此,我必须使用故障保护插件。
但是这两种技术都不起作用,很可能是因为类加载器的一些黑暗魔法。
获取实现版本的最简单方法是
this.getClass().getPackage().getImplementationVersion()
上面写着 META-INF/MANIFEST.MF
在看起来像某物的jar里
Name: eu/simuline/octave/
Extension-name: eu.simuline.octave
Specification-Version: 0.7
Implementation-Version: 0.7-SNAPSHOT
可能不需要扩展,需要的是从包名派生的节名(后面的斜杠似乎很重要;-))。但如前所述,这只适用于生产环境,而不适用于带有故障保护插件的测试。然后java代码返回 0.7-SNAPSHOT
否则它就回来了 null
,这意味着根据api文档,版本未知。。。好。
我该怎么做才能在maven测试中包含元信息???
1条答案
按热度按时间5uzkadbs1#
我对故障保护插件做了一些研究。例如,与
揭幕
注意
testClassesDirectory
. 我认为插件可以访问在前面的生命周期阶段包中创建的jar但显然这不是真的,似乎没有办法做到这一点。因此,所有的东西都不起作用。
我提出了一个功能/增强请求来解决这个问题。
不知道他们是否喜欢我的主意。