相关问题:
http://www.iteye.com/problems/95405
http://www.iteye.com/problems/74168 (该问题给出的方案是使用classpath)
原因分析:
比如你的maven工程是如下所示,包含很多子module:
test
test-core
test-web
如果在test-web中测试springmvc的项目时,会发现当前工作目录仍然是test 而不是test-web;所以问题就是出在这。
接下来提供几个方案:
1、绝对路径方式:
@WebAppConfiguration(value = "file:E:\\test\\test-web\\src\\main\\webapp")
或
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setTemplateLoaderPath("file:E:\\lion\\lion-web\\src\\main\\webapp")
缺点很明显,如果需要在win/linux上切换 很痛苦
2、类路径方式:
@WebAppConfiguration(value = "classpath:template")
或
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setTemplateLoaderPath("classpath:template");
缺点也是比较明显,需要复制两份模板。
3、通过获取webapp目录路径的方式:
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
String path = FreeMarkerConfig.class.getClassLoader().getResource(".").toString().substring(6);
String webappPath = path.replace("/target/test-classes/", "");
webappPath = webappPath.replace(wac.getServletContext().getRealPath(""), "");
webappPath = webappPath + "/src/main/webapp";
configurer.setTemplateLoaderPath("file:" + webappPath);
思路就是:先获取当前的测试类编译到的路径,然后往上获取到根,再拼上src/main/webapp即可拿到目录。
所以3更通用些。
如果你只需要使用maven test 运行:更好的方案是:
1、在test-web的pom.xml中添加
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <systemProperties combine.children="append"> <property> <name>modulePath</name> <value>${project.basedir}</value> </property> </systemProperties> </configuration> </plugin>
project.basedir就是当前模块的目录。
然后在测试类中通过:System.getProperty("modulePath"); 即可拿到该路径,但是如果在如idea集成环境中不好用。
还一种方案是如在idea中使用(具体没有测试):
n Run->Edit configuration->Defaults->JUnit->Working directory
set the value$MODULE_DIR$
and Intellij will set the relative path in all junits just like Maven.
从如上方案中可以看出,【3】是最通用的方案。
相关推荐
创建多模块Maven项目的第一步是定义一个父模块(Parent Module),这个父模块不包含任何代码,它的主要作用是定义共有的依赖管理和版本控制。在`pom.xml`文件中,我们需要设置`groupId`、`artifactId`和`version`,...
在Spring MVC中,多module意味着我们可以将不同的功能如业务逻辑、数据访问、视图层等分别放在不同的模块中,每个模块可以独立开发、测试和部署。 2. **Maven多模块项目**:在Java开发中,通常使用Maven作为构建...
4.2.2.GA版本是SpringSide的一个稳定版本,优化了之前的特性并修复了已知问题,为开发者带来了更佳的开发体验。 二、Spring集成 SpringSide与Spring框架的深度集成是其最大亮点。它包含了Spring的核心组件,如IoC...
小姐姐炫酷唯美引导页.zip
scratch少儿编程逻辑思维游戏源码-让它们跳起来.zip
少儿编程scratch项目源代码文件案例素材-战斗塔防.zip
前端开发_Vue全家桶_vw适配_vux组件库_mescroll滚动_fastclick优化_mock模拟_less预处理器_移动端脚手架_基于Vue2和Webpack3构建的移动
数据可视化分析_微信小程序开发_JavaScript_Canvas图表渲染_数据助手工具_仿微信小程序数据助手_支持线性图圆环图柱状图条形图_动态效果适配_商业数据分析_移动端数据
少儿编程scratch项目源代码文件案例素材-章鱼怪.zip
音乐流媒体_API开发_网易云音乐接口封装与数据抓取_提供完整的网易云音乐API调用解决方案_包含歌曲搜索_MP3资源获取_歌词解析_播放列表管理_歌手专辑查询_专辑详情展示_MV
物联网与健康监测_基于RISC-V架构ESP32-C3芯片与MAX30102MAX30205传感器_LVGL图形界面与WiFiBLE双模通信的智能手表系统_实时监测心率血氧体温
wangtengfei-hn_EmployeesExample_23540_1745868671962
Android开发_自定义View绘制动画效果_模仿小米手环App首页计步数据展示_实现可自定义目标步数当前步数颜色字体大小圆点尺寸的动态步数统计图表组件_用于健康运动类App展示
少儿编程scratch项目源代码文件案例素材-钻机机器人.zip
scratch少儿编程逻辑思维游戏源码-狂暴坦克.zip
scratch少儿编程逻辑思维游戏源码-拳击.zip
scratch少儿编程逻辑思维游戏源码-魔方冲刺.zip
少儿编程scratch项目源代码文件案例素材-重返危机.zip
杰奇CMS小说网站系统_php53-73_mysql5-MariaDB10_utf8mb4编码_GBK自动转码_INNODB存储引擎_多模块支持_前后台分离_电脑手机双版适配_
linyuan620_StockAnalysisAssistant_17128_1745866117970