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运行环境的更多相关文章

  1. maven项目的标准目录结构

    maven项目的标准目录结构如下:

  2. 构建maven项目,自定义目录结构方法

    构建maven项目 创建自定义的文件目录方法: 在项目名称右键-->Builder Path-->Configure Builder Path...Source菜单下的Add Folder ...

  3. 奇葩问题 eclipse下 maven项目 java Resource报个小红叉,然而里面却没有小红叉

    之前没注意,不知是一开始就有还是这两天才有,说下解决方案: 右击项目“Properties”,在弹出的“Properties”的左侧边框,单击“Project Facets”,打开“Project F ...

  4. 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 ...

  5. Eclipse下Maven新建项目、自动打依赖jar包(包含普通项目和Web项目)

    不多说,直接上干货! 当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个 ...

  6. maven 创建web项目的标准目录结构

      maven 创建web项目的标准目录结构 CreateTime--2018年4月18日21:05:37 Author:Marydon 1.标准目录介绍(开发目录) 2.在eclipse下,目录展示 ...

  7. Idea导入多个maven项目到同一目录下

    目标 简单导入多个maven项目进入同一个project(相当于eclipse的workspace) 过程 1.新建一个目录作为仿eclipse的workspace,这里起名为idea-workspa ...

  8. Eclipse 工具下Maven 项目的快速搭建

    Eclipse 工具下Maven 项目的搭建 参考博文:https://www.cnblogs.com/iflytek/p/7096481.html 什么是Maven项目 简单来说,传统的Web项目: ...

  9. 解决使用intellij idea开发MAVEN项目在target目录下不存在mapper.xml文件

    原 解决使用intellij idea开发MAVEN项目在target目录下不存在mapper.xml文件 原文章链接:https://blog.csdn.net/beauxie/article/de ...

随机推荐

  1. 7.5 数据注解特性--MaxLength&&MinLength

    MaxLength attribute can be applied to a string or array type property of a domain class. EF Code Fir ...

  2. SQL 循环语句 while 介绍 实例

    declare @i int begin insert into test (userid) values(@i) end --------------- while 条件 begin 执行操作 en ...

  3. WCF入门教程(二)如何创建WCF服务

    WCF入门教程(二)从零做起-创建WCF服务 通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) ...

  4. 吉日嘎拉C#快速开发平台V4.0到V4.2升级记

    目前我用的版本是4.0的,也有近2年没更新了,狠了狠心升级一下,没想到真的行动起来,也没那么难! 用了3天时间,将吉日嘎拉的代码升级到了4.2版本,并让原来的DotNet.WebApplication ...

  5. 常用html、CSS、javascript前端命名规范

    无论是从技术角度还是开发视角,对于web前端开发规范文档都有一定规范,本文就css3和html5的发展前景总结了一系列的web开发文档,仅供大家参考. 规范目的: 为提高团队协作效率, 便于后台人员添 ...

  6. Python默认版本修改

    Python默认版本修改 当电脑安装了多个版本的Python,而Shell中默认的Python不是你想要的,这个时候就需要对Python的默认版本进行修改. 在Windows中,可以通过修改环境变量的 ...

  7. Redis安装配置

    Redis有服务端和客户端 服务端: 服务端下载地址: https://github.com/dmajkic/redis/downloads 解压后: 然后进入CMD命令: 不要关闭此命令窗(关闭服务 ...

  8. ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)

    ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.Configure ...

  9. php动态更改post_max_size, upload_max_filesize等值

    在配置文件里 有些PHP 配置选项可以用int_set() 函数 直接在 项目里修改.但是有些值确不行.例如和上传文件有关的post_max_size和upload_max_filesize int_ ...

  10. Android—9.png的制作和去除黑线

    在开发中为了避免图片因为拉伸而失真我们会把背景图片设置为9.png图片,这篇博客介绍的是如何将图片设置为9.png的 1.首先在android—>sdk—>tools文件夹中打开下图所示文 ...