`
jinnianshilongnian
  • 浏览: 21504257 次
  • 性别: Icon_minigender_1
博客专栏
5c8dac6a-21dc-3466-8abb-057664ab39c7
跟我学spring3
浏览量:2418711
D659df3e-4ad7-3b12-8b9a-1e94abd75ac3
Spring杂谈
浏览量:3008830
43989fe4-8b6b-3109-aaec-379d27dd4090
跟开涛学SpringMVC...
浏览量:5639512
1df97887-a9e1-3328-b6da-091f51f886a1
Servlet3.1规范翻...
浏览量:259935
4f347843-a078-36c1-977f-797c7fc123fc
springmvc杂谈
浏览量:1597344
22722232-95c1-34f2-b8e1-d059493d3d98
hibernate杂谈
浏览量:250226
45b32b6f-7468-3077-be40-00a5853c9a48
跟我学Shiro
浏览量:5858974
Group-logo
跟我学Nginx+Lua开...
浏览量:702014
5041f67a-12b2-30ba-814d-b55f466529d5
亿级流量网站架构核心技术
浏览量:785230
社区版块
存档分类
最新评论

maven 多module时测试springmvc+freemarker的问题总结

 
阅读更多

相关问题:

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中使用(具体没有测试):

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.

http://stackoverflow.com/questions/5637765/how-to-deal-with-relative-path-in-junits-between-maven-and-intellij

 

 

从如上方案中可以看出,【3】是最通用的方案。

 

2
1
分享到:
评论
4 楼 jinnianshilongnian 2013-05-28  
lanhuidong 写道
jinnianshilongnian 写道
lanhuidong 写道
@WebAppConfiguration("lion-web/src/main/webapp")根据您的提示这么写就可以了哦。就是在默认值前加上模块名称lion-web/就好了。谢谢啊

这么不是很通用 因为【lion-web】 不过如果不变也是没关系的

一般项目建好后这个模块名也不怎么变动了,我觉得可以的,这样简单点

嗯,如果不变 这个最简单  

还一种方式就是重写Freemarker View 不让其去加载resource即可
3 楼 lanhuidong 2013-05-28  
jinnianshilongnian 写道
lanhuidong 写道
@WebAppConfiguration("lion-web/src/main/webapp")根据您的提示这么写就可以了哦。就是在默认值前加上模块名称lion-web/就好了。谢谢啊

这么不是很通用 因为【lion-web】 不过如果不变也是没关系的

一般项目建好后这个模块名也不怎么变动了,我觉得可以的,这样简单点
2 楼 jinnianshilongnian 2013-05-28  
lanhuidong 写道
@WebAppConfiguration("lion-web/src/main/webapp")根据您的提示这么写就可以了哦。就是在默认值前加上模块名称lion-web/就好了。谢谢啊

这么不是很通用 因为【lion-web】 不过如果不变也是没关系的
1 楼 lanhuidong 2013-05-28  
@WebAppConfiguration("lion-web/src/main/webapp")根据您的提示这么写就可以了哦。就是在默认值前加上模块名称lion-web/就好了。谢谢啊

相关推荐

    手动创建 SpringMvc +SpringDataJpa+Hibernate+ freemarker mavenProject+ 环境切换 webDemo

    在本项目中,我们主要探讨如何手动构建一个基于SpringMVC、Spring Data JPA、Hibernate以及FreeMarker模板引擎的Maven工程,同时实现环境切换功能。这个基础框架为日常开发工作提供了必要的支持。 首先,SpringMVC...

    maven+springmvc+spring+hibernate+freemarker

    maven管理项目+springmvc+spring+hibernate+freemarker 集成框架。其中注解格式清晰,hibernate进行了代码封装,对开发效率有了提高,对异常进行了封装。freemarker也有优化,参考common包下。对日期工具类有各种...

    Maven+SpringMVC+Freemarker Demo

    **Maven+SpringMVC+Freemarker Demo详解** 在Web开发中,Maven、SpringMVC和Freemarker是三个关键的组件,它们分别负责构建管理、业务逻辑处理和视图展示。这个"Maven+SpringMVC+Freemarker Demo"是一个基础的Web...

    基于SpringMVC+Spring+MyBatis+Maven项目案例.zip

    基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis...

    maven+springmvc+redis+mybatis整合

    本项目以“maven+springmvc+redis+mybatis整合”为主题,旨在提供一个基于这些技术的集成框架,特别强调了利用Redis作为缓存来提升应用性能。下面将详细阐述这个框架中的各个组成部分以及它们之间的协作。 首先,...

    maven+springmvc+mybatis+freemarker整合框架

    **maven** Maven是一个Java项目管理工具,它...总之,“maven+springmvc+mybatis+freemarker”的整合框架提供了一种高效、灵活的Web应用开发模式,它结合了现代Java开发的多个优秀组件,为开发者带来了极大的便利。

    maven搭建SpringMVC+spring+ibatis

    在IT行业中,构建高效、可扩展的Web应用是至关重要的,而"Maven搭建SpringMVC+Spring+Ibatis"的组合则提供了一种强大的解决方案。本文将深入探讨这些技术及其集成,帮助你理解和掌握如何利用它们来构建现代化的Java ...

    【ssm框架】 spring+springMVC+mySQL+myBatis+freemarker+Maven小示例1

    SSM框架是Java web开发中常用的整合框架,由Spring、SpringMVC和MyBatis三个组件构成。这个项目示例提供了使用SSM框架构建Web应用的基础结构,让我们逐一解析其中涉及的技术点。 **Spring框架**:Spring是核心的...

    maven+springMvc+freemarker

    `Maven`、`Spring MVC`和`FreeMarker`是Java开发领域中常用的三个工具,它们各自扮演着关键角色,共同构建了一个强大的开发框架。下面我们将深入探讨这三个技术及其在实际项目中的应用。 **Maven** Maven是一个项目...

    Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA

    在现代Java Web开发中,"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA"是一个常见的架构组合,被广泛应用于构建企业级应用程序。这个组合通常被称为"SSM",其中"M"代表Maven,"S"代表Spring,包括Spring核心...

    maven多模块+springMVC+mybatis+freemarker+mysql

    【标题】"maven多模块+springMVC+mybatis+freemarker+mysql" 描述了一种基于Java技术栈的企业级应用开发架构。这个架构整合了多个关键组件,包括项目构建工具Maven、Web层框架Spring MVC、持久层框架MyBatis、模板...

    maven+springMVC+mybatis+velocity+mysql+junit项目框架搭建

    本项目框架“maven+springMVC+mybatis+velocity+mysql+junit”提供了一种高效、灵活且可维护的解决方案。以下将详细讲解这些组件及其作用。 1. Maven: Maven是一个项目管理工具,用于构建、依赖管理和项目信息...

    SpringMvc+Spring+Mybatis+Maven+注解方式=整合

    "SpringMvc+Spring+Mybatis+Maven+注解方式"是一个经典的Java后端技术栈,它整合了四个关键组件,为开发人员提供了强大的工具和框架支持。下面将详细讲解这四个组件及其整合方式。 1. **Spring Framework**: ...

    idea工具创建的Spring+SpringMVC+Hibernate+maven项目

    标题中的"idea工具创建的Spring+SpringMVC+Hibernate+maven项目"指的是使用IntelliJ IDEA这个集成开发环境(IDE)构建的一个Java Web项目,该项目整合了四个关键的技术框架:Spring、SpringMVC、Hibernate以及Maven...

    maven构建Spring4+SpringMVC+Mybatis3

    在IT行业中,构建Java Web应用程序是一项常见的任务,而"Maven构建Spring4+SpringMVC+Mybatis3"的组合是这种任务的一种流行实现方式。这个项目利用了三个强大的开源框架:Spring Framework作为核心容器,Spring MVC...

    maven+spring+springMvc+mybaits+freemarker

    该框架集合了Maven、Spring、Spring MVC、MyBatis和FreeMarker,每部分都有其独特的功能和重要性。 **Maven** 是一个项目管理和综合工具,它管理项目的构建、报告和文档。它通过POM(Project Object Model)文件来...

    springMVC+maven+hibernate框架

    springMVC+maven+hibernate框架,搭建的过程 可以参考 java进阶(五)------springMVC---springMVC+Hibernate+maven完整搭建运行步骤 http://blog.csdn.net/zzq900503/article/details/49892783

    基于IDEA+Spring+SpringMVC+Mybatis+Redis+Shiro+Maven实现的教务管理系统+源码

    基于IDEA+Spring+SpringMVC+Mybatis+Redis+Shiro+Maven实现的教务管理系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于IDEA+Spring+SpringMVC+...

    Maven+Spring+SpringMVC+MyBatis+FreeMarker模版下载为Word的Demo

    这是一个基于Java技术栈的Web应用开发示例,主要利用了Maven、Spring、SpringMVC、MyBatis和FreeMarker五个关键组件。下面将详细解释这些技术和它们在项目中的作用。 1. Maven: Maven是Apache开发的一个项目管理...

    基于SpringMVC+Spring+MyBatis+Maven项目案例源码+数据库.zip

    基于SpringMVC+Spring+MyBatis+Maven项目案例源码+数据库.zip 基于SpringMVC+Spring+MyBatis+Maven项目案例源码+数据库.zip 基于SpringMVC+Spring+MyBatis+Maven项目案例源码+数据库.zip 基于SpringMVC+Spring+...

Global site tag (gtag.js) - Google Analytics