eclipse下maven项目保持原有目录结构配置resin运行环境
maven项目用起来很方便,但是它的目录结构和eclipse的目录结构是有区别的,故而在eclipse下的maven项目,直接运行调试是有一些问题的.
为了方便maven项目的运行调试,因而也就有了像tomcat-maven-plugin,jetty-maven-plugin这类maven插件,不使用eclipse的运行,而直接在maven中运行这类插件是一点问题没有的,调试使用都很方便.但是resin这个容器在maven下的插件就不怎么样了,而且也不再有维护支持了.此时就只能使用eclipse的原始的运行调试命令了.
这里有几个小细节要先清楚(以web项目来说):
1.maven项目使用package命令是直接将class文件放到target目录下的.
eclipse的项目,class文件是根据项目中鼠标右键-buildpath中配置的路径存放.
2.maven项目的web根路径是src/main/webapp下
eclipse项目的web根路径是WebRoot(WebContent)下
3.maven项目在执行package后才会在target目录下生成项目的完整目录,包含项目的class文件和lib中引入的jar包.
eclipse项目是根据buildpath路径实时编译class文件(你取消了autobuild另说),在WebRoot(WebContent)/WEB-INF/lib下存放引入的jar包
观察以上3点能得到一些明显的区别:eclipse项目是标准的web程序目录结构,class文件和lib在web根路径下.maven项目的class和lib在target下,与web根目录分开存放.
所以只需要将maven目录伪装成标准目录即可,在不破坏maven目录结构的情况下,有2种方式可行:
1.标准目录都是web根路径下是class和lib,所以我们只需要将项目的buildpath设置到src/main/webapp/WEB-INF/classes下即可.然后复制一份lib文件到src/main/webapp/WEB-INF/lib下.把maven的web根目录处伪装出一个标准目录结构来.resin的配置默认即可正常运行.此时项目 依然是maven项目,但是可以按照eclispe的方式来运行调试.
2.从resin的配置文件入手,不管怎么样最终运行的时候是要将项目部署到resin中才运行起来的,所以只要让resin能识别maven项目的目录结构也可达到目的.
查找resin的配置文件能发现如下配置:
<cluster id="app-tier">
<resin:import path="classpath:META-INF/caucho/app-default.xml" />
<server id="" address="127.0.0.1" port="6801">
<http address="*" port="9081" />
</server> <host id="" root-directory=".">
<web-app id="/xxx" root-directory="D:\xxx\项目名\src\main\webapp" />
</host>
</cluster>
可以看到有这么app-default.xml文件,打开它能看到如下部分:
<class-loader>
<compiling-loader path="WEB-INF/classes"/>
<library-loader path="WEB-INF/lib"/>
</class-loader>
此处指定了resin加载class和lib文件的路径.maven中只有package后在target目录下会生成项目的完整文件,所以只要指定这个路径即可.
我们注意到:
<host id="" root-directory=".">
<web-app id="/xxx" root-directory="D:\xxx\项目名\src\main\webapp" />
</host>
resin的web根路径被指定为D:\xxx\项目名\src\main\webapp文件夹,所以以此目录为起点找到class和lib文件夹位置即可.我们package后在target目录下生成的目录为:
D:\xxx\项目名\target\buildname\WEB-INF\classes和lib
我们使用相对路径,从webapp向上返1级目录到main,再向上到src,再向上到项目名目录,然后再进入target目录即可,所以只需要将app-default.xml文件修改成如下路径即可:
<class-loader>
<compiling-loader path="../../../target/classes"/>
<library-loader path="../../../target/buildname/WEB-INF/lib"/>
</class-loader>
可能要说buildname是什么,这个实际就是pom.xml中定义的:
<build>
<finalName>buildname</finalName>
</build>
ps:虽然不认为有人会这么做,但是还是想强调一下第二种方法只是为了本地调试,别去乱改线上环境的resin配置.
eclipse下maven项目保持原有目录结构配置resin运行环境的更多相关文章
- maven项目的标准目录结构
maven项目的标准目录结构如下:
- 构建maven项目,自定义目录结构方法
构建maven项目 创建自定义的文件目录方法: 在项目名称右键-->Builder Path-->Configure Builder Path...Source菜单下的Add Folder ...
- 奇葩问题 eclipse下 maven项目 java Resource报个小红叉,然而里面却没有小红叉
之前没注意,不知是一开始就有还是这两天才有,说下解决方案: 右击项目“Properties”,在弹出的“Properties”的左侧边框,单击“Project Facets”,打开“Project F ...
- eclipse新建maven项目:'Building' has encountered a problem. Errors occurred during the build.
二.eclipse 新建maven 项目报错(因为没有配置maven环境) 1.问题: ① 出现的问题1: Could not calculate build plan:Plugin org.apac ...
- Eclipse下Maven新建项目、自动打依赖jar包(包含普通项目和Web项目)
不多说,直接上干货! 当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个 ...
- maven 创建web项目的标准目录结构
maven 创建web项目的标准目录结构 CreateTime--2018年4月18日21:05:37 Author:Marydon 1.标准目录介绍(开发目录) 2.在eclipse下,目录展示 ...
- Idea导入多个maven项目到同一目录下
目标 简单导入多个maven项目进入同一个project(相当于eclipse的workspace) 过程 1.新建一个目录作为仿eclipse的workspace,这里起名为idea-workspa ...
- Eclipse 工具下Maven 项目的快速搭建
Eclipse 工具下Maven 项目的搭建 参考博文:https://www.cnblogs.com/iflytek/p/7096481.html 什么是Maven项目 简单来说,传统的Web项目: ...
- 解决使用intellij idea开发MAVEN项目在target目录下不存在mapper.xml文件
原 解决使用intellij idea开发MAVEN项目在target目录下不存在mapper.xml文件 原文章链接:https://blog.csdn.net/beauxie/article/de ...
随机推荐
- MVC学习系列13--验证系列之Remote Validation
大多数的开发者,可能会遇到这样的情况:当我们在创建用户之前,有必要去检查是否数据库中已经存在相同名字的用户.换句话说就是,我们要确保程序中,只有一个唯一的用户名,不能有重复的.相信大多数人都有不同的解 ...
- 基于STM32Cube的DAC数模转化
1. STM32Cube配置 1.1 DAC配置 1.2 TIM6 配置 1.3 利用Cube产生工程程序,MDK打开软件 在主循环上添加语句: HAL_TIM_Base_S ...
- php图片验证码为什么必须加上ob_clean();才能正常显示。
ob_clean这个函数的作用就是用来丢弃输出缓冲区中的内容,如果你的网站有许多生成的图片类文件,那么想要访问正确,就要经常清除缓冲区. If you work on an extremely lar ...
- MySQL 相关总结
MySQL 优秀在线教程 RUNOOB-SQL 教程 MySQL 常用命令 导出操作 -- 某数据库 全部表 结构和数据 mysqldump -h192.168.8.152 -uroot -p man ...
- linux下的目录结构和内容
用了这么长时间linux系统,有时候哪个文件应该在哪还是不知道的,所以对于根下的目录结构记下: /bin bin是Binary的缩写.这个目录存放着最经常使用的命令. /boot这里存放的是启动Lin ...
- 房地产行业的商业智能BusinessIntelligence介绍
商业智能(BI)的需求 随着企业信息化程度的深入,企业内部对获取决策信息的效率.正确性.全面性和准确度的要求也越来越高.但是,伴之而来的却是繁多的报表和信息孤岛的出现,同时由于各 ...
- GJM :Unity3d导出eclipse工程,导入Android Studio
unity3d导出eclipse工程,导入Android Studio 标签: unity3Dandroid studio 2016-08-11 10:42 398人阅读 评论(1) 收藏 举报 分类 ...
- jQuery ClockPicker 圆形时钟
ClockPicker.js是一款时钟插件,其实还可以改进,里面的分可以改成短横线. 在线实例 实例预览 jQuery ClockPicker 圆形时钟 使用方法 <div class=&qu ...
- Jq基础简介
jQuery就是用原生js写出的框架集(Write less do more ) 1.需要注意的问题?(1).jQuery语法需要重新学习(2).jQuery需要注意版本之间的兼容性 (3)不是越新的 ...
- #9.5课堂JS总结#循环语句、函数
一.循环语句 1.for循环 下面是 for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块) ...