Java:如何从 maven 故障安全插件访问元文件信息?

标签 java maven maven-failsafe-plugin

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

最佳答案

我对故障安全插件做了一些研究。
例如运行

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
但显然这不是真的,而且似乎没有办法这样做。
因此,所有的东西都不起作用。
我提交了一个功能/增强请求来解决这个问题。
不知道他们是否喜欢我的想法。

关于Java:如何从 maven 故障安全插件访问元文件信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64857387/

相关文章:

java - JBoss 7.1 独立版/tmp/vfs 稳步增长

java - 无法找到或加载主类 $JAVA_OPTS

java - 如何使用 Maven Failsafe 插件运行 JUnit 5 集成测试?

java - Maven故障安全不执行测试

java - 为什么我的应用中的动画在从 playStore 下载时不起作用,但在 AndroidStudio 中却起作用?

Java HashSet(长整型与整数)

java - 为什么使用单例而不是静态方法?

maven-2 - Jasper Reports 的 Maven 存储库是什么?

java - 打开项目时在 Eclipse 2018-12 中找不到自动模块

java - 与maven集成测试