java:如何从maven failsafe插件访问元文件信息?

cuxqih21  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(382)

我想访问存储在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测试中包含元信息???

5uzkadbs

5uzkadbs1#

我对故障保护插件做了一些研究。例如,与

mvn -X verify

揭幕

INFO] --- maven-failsafe-plugin:3.0.0-M5:verify (run-tests) @ javaoctave ---
[DEBUG] Configuring mojo org.apache.maven.plugins:maven-failsafe-plugin:3.0.0-M5:verify from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-failsafe-plugin:3.0.0-M5, parent: jdk.internal.loader.ClassLoaders$AppClassLoader@277050dc]
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-failsafe-plugin:3.0.0-M5:verify' with basic configurator -->
[DEBUG]   (s) basedir = /home/ernst/OpenSource/OctaveInJavaGit/octaveInJava/javaoctave
[DEBUG]   (s) reportsDirectory = /home/ernst/OpenSource/OctaveInJavaGit/octaveInJava/javaoctave/target/failsafe-reports
[DEBUG]   (f) session = org.apache.maven.execution.MavenSession@1416a80a
[DEBUG]   (s) skip = false
[DEBUG]   (f) summaryFile = /home/ernst/OpenSource/OctaveInJavaGit/octaveInJava/javaoctave/target/failsafe-reports/failsafe-summary.xml
[DEBUG]   (s) testClassesDirectory = /home/ernst/OpenSource/OctaveInJavaGit/octaveInJava/javaoctave/target/test-classes
[DEBUG]   (s) testFailureIgnore = false
[DEBUG] -- end configuration --
[DEBUG] Failsafe report directory: /home/ernst/OpenSource/OctaveInJavaGit/octaveInJava/javaoctave/target/failsafe-reports

注意 testClassesDirectory . 我认为插件可以访问在前面的生命周期阶段包中创建的jar
但显然这不是真的,似乎没有办法做到这一点。因此,所有的东西都不起作用。
我提出了一个功能/增强请求来解决这个问题。
不知道他们是否喜欢我的主意。

相关问题