gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:18:16 25 4
gpt4 key购买 nike

我想访问存储在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com