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 ...
随机推荐
- 你不知道的HttpHandler相关知识
一.关于IHttpHandler.IsReusable 很多人不明白,这哥们到底干嘛的,估计是微软最初的一个想法--让一个对象可以一直不断地被重复使用 ,但这个想法不成熟,会带来很多隐藏问题,一个对象 ...
- 轻松理解AOP思想(面向切面编程)
本文旨在帮助还没有理解AOP的童鞋看透弄懂AOP,也欢迎高手批评指正. 先说一个Spring是什么吧,大家都是它是一个框架,但框架这个词对新手有点抽象,以致于越解释越模糊,不过它确实是个框架的,但那是 ...
- react入门(4)
首先还是来回顾一下前三篇讲的内容 react入门(1): jsx,组件,css写法 react入门(2):事件,this.props.children,props,...other react入门(3 ...
- Cesium原理篇:2最长的一帧之网格划分
上一篇我们从宏观上介绍了Cesium的渲染过程,本章延续上一章的内容,详细介绍一下Cesium网格划分的一些细节,包括如下几个方面: 流程 Tile四叉树的构建 LOD 流程 首先,通过上篇的类关系描 ...
- Nancy之Forms authentication的简单使用
一.前言 想必大家或多或少都听过微软推出的ASP.NET Identity技术,可以简单的认为就是一种授权的实现 很巧的是,Nancy中也有与之相类似的技术Authentication,这两者之间都用 ...
- Windows 10 密钥分享
Windows 10 Technical Preview for Enterprise:KEY:PBHCJ-Q2NYD-2PX34-T2TD6-233PKhttp://technet.microsof ...
- MS SQL 字符拆分存处理
MS SQL Server没有split()函数,但是我们可以写一个Table-valued Functions定义函数[dbo].[udf_SplitStringToTable] : CREATE ...
- WPF资源使用
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...
- bzoj1202--带权并查集+前缀和
http://www.lydsy.com/JudgeOnline/problem.php?id=1202 记s[i]=a[1]+a[2]+...+a[i],即s[i]为前缀和.再令v[i]=s[f[i ...
- 转载:《TypeScript 中文入门教程》 17、注解
版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 介绍 随着TypeScript和ES6里引入了类,现在在一些场景下我们会需要额外的特性 ...