如何使清单在maven/surefire单元测试运行“mvn测试”期间可用?
我有一个开源项目,我正在从Ant转换为Maven,包括它的单元测试。以下是Maven项目的项目源库:
http://github.com/znerd/logdoc
我的问题与称为“基础”的主要模块有关。此模块有一个单元测试,用于测试静态方法的行为
getVersion()
在班里
org.znerd.logdoc.Library
. 此方法返回:
Library.class.getPackage().getImplementationVersion()
这个
getImplementationVersion()
方法返回清单文件中设置的值。到目前为止,一切都很好。我在过去测试过它,并且它工作得很好,只要路径的类路径上确实有清单。
META-INF/MANIFEST.MF
(在文件系统或JAR文件中)。
现在我面临的挑战是,运行单元测试时清单文件不可用:
mvn test
Surefire运行单元测试,但我的单元测试失败,并显示
Library.getVersion()
返回
null
.
当我想检查这个罐子时,我发现它甚至没有被生成。Maven/Surefire对类运行单元测试,
之前
资源被添加到类路径。
进一步调查显示,Surefire在临时目录中生成自己的JAR文件,例如
/private/var/folders/TR/TREvj1wIHYyAcUy-xmc3UU+++TI/-Tmp-/surefirebooter7448562488934426857.jar
然后使用这个jar加载库类。这个jar不包含我卡在下面的资源
src/main/resources
. 所以把一个
META-INF/清单.mf
文件也不工作。
那么我该如何告诉Surefire
META-INF/清单.mf
文件可从与
Library
班级。
请注意,我使用Maven 2.2.0,Java1.6017在Mac OS x0.62上使用JUnit 4.81.