use*_*605 6 java maven maven-failsafe-plugin
我想访问存储在 jar 文件中的实现版本等信息。这似乎工作得很好,在任何技术中,但总是基于类加载器。
如果我想在我的 maven 环境中测试,当然我不能使用 surefire 插件,因为这是在 jar 中打包之前。因此我必须使用故障安全插件。
但是这两种技术都不起作用,很可能是因为一些关于类加载器的黑魔法。
获取实现版本的最简单方法就是
this.getClass().getPackage().getImplementationVersion()
Run Code Online (Sandbox Code Playgroud)
它从META-INF/MANIFEST.MF看起来像的罐子里读取
Name: eu/simuline/octave/
Extension-name: eu.simuline.octave
Specification-Version: 0.7
Implementation-Version: 0.7-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)
也许不需要扩展,需要的是部分名称,它以一种明显的方式从包名称派生出来(尾部斜杠似乎很重要;-))。但如前所述,这仅适用于生产环境,不适用于带有故障安全插件的测试。然后java代码返回0.7-SNAPSHOT,否则它只是返回null,这意味着根据api文档,版本未知......好吧。
我该怎么做才能在 maven 测试中包含元信息???
我对故障安全插件做了一些研究。例如运行
mvn -X verify
Run Code Online (Sandbox Code Playgroud)
揭幕
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
Run Code Online (Sandbox Code Playgroud)
请注意testClassesDirectory. 我认为该插件访问在前面的生命周期阶段包中创建的 jar
,但显然这是不正确的,并且似乎没有办法这样做。因此所有的东西都不起作用。
我提交了一个功能/增强请求来解决这个问题。
不知道他们是否喜欢我的想法。
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |