Kan*_*ath 4 java junit maven-2
我在Maven项目B(它是项目A的孩子)中的测试代码有类似的东西
String filePath = "src/main/webapp";
//do something with the filePath
Run Code Online (Sandbox Code Playgroud)
当我从子项运行项目(即B级)时,上面的测试用例运行正常,但是当我从父项目A运行时(即,在父级别执行mvn安装),这会失败,因为很明显没有名为"src /的文件夹"在父级别下的main/webapp(但是在子级别可用).
我知道我可以做一些编码,检查一下测试用例是否从父/子模块运行,但显然我想知道其他人在遇到这个问题时做了什么?
不,我不能使用类路径(出于各种无聊的原因).
我也尝试了相对路径,但随后测试用例开始了解太多.实际上有解决方案吗?
更新(12月2日) - 我在webapp文件夹下有一个web.xml,并使用该web.xml在测试用例中创建一个jetty服务器.理想情况下,src/main/webapp不会放在类路径中.WAR插件使用它来打包WAR.现在,我尝试了另一种方法,我将web.xml放在src/main/resource/console-webapp/WEB-INF/web.xml目录中,并更改了maven war插件中的webXml属性.这似乎解决了我的问题.但是,在输出WAR中我有一个web.xml和另一个冗余web.xml(由于它在类路径中而被复制).
我尝试过"packageExcludes"和"webResources/excludes",并获得了war插件,省略了第二个web.xml,但仍然复制了目录"console-webapp"(尽管是空的).有没有办法告诉maven war插件完全忽略一个目录(即什么是蚂蚁模式?)
Maven 2约定声明所有测试资源(包括您尝试在测试中使用的src/test/resources文件)必须存储在该文件夹中.如果您遵守此约定,则可以直接从类路径获取文件.这些资源不会包含在最终包装中(JAR,WAR,EAR ......).
当然,您可以更改目录,然后在以下内容中指定新的测试资源目录pom.xml:
<build>
<testResources>
<testResource>
<directory>...</directory>
</testResource>
</testResources>
...
Run Code Online (Sandbox Code Playgroud)
在您的问题中,您指定不能使用类路径.为什么这样?