在使用tomcat时,如何避免将jar部署到Web内容文件夹中?

时间:2015-07-26 09:53:47

标签: java eclipse tomcat tomcat8

所以我面临的问题是放慢了我的开发过程。

我在tomcat 8中使用eclipse。 我的软件有3个不同的tomcat服务器,运行在不同的项目上。

同样,我的软件分为8个组件,每个tomcat服务器都使用其他一些项目。

目前我正在使用Jenkins构建我的软件并将jar文件部署到tomcat服务器的web内容文件夹中。

主要问题是构建它需要1分钟,然后我需要刷新eclipse中的所有项目,然后从eclipse重新启动tomcat服务器。

我正在寻找一种更简单,更快捷的方法。

有没有办法指出eclipse中的tomcat服务器实际查看项目的src文件夹而不是查找jar?

2 个答案:

答案 0 :(得分:2)

有一个technique让Tomcat从您的eclipse项目创建Web上下文,而不是构建和部署到Tomcats webapp文件夹。主要优点是不需要构建war文件或复制类(文件类似于动态Web项目)。

基本上它涉及以下内容:

  1. 你有一个带有bin文件夹的eclipse项目,对jar文件的依赖,可能依赖于其他项目以及包含webapp资源的web文件夹,包括WEB-INF文件夹。< / LI>
  2. 您可以在Tomcats server.xml中创建一个指向Tomcat运行应用程序所需的项目资源的上下文,而不是部署到Tomcat。然后,Tomcat从项目位置获取类和资源。
  3. 完成某些开发并希望Tomcat接收更改后,您可以使用Tomcats管理器重新启动应用程序。管理器具有基于HTTP的接口,因此甚至可以从命令行完成。
  4. 上面的链接描述了如何为Tomcat 7做到这一点。在Tomcat 8中,这种技术的语法有changed,看起来像这样(你明白了):

    <Context path="/mycontext" docBase="/myproj/web">
        <Resources>
            <PreResources webAppMount="/WEB-INF/classes" base="/myproj/bin" className="org.apache.catalina.webresources.DirResourceSet"/>
            <PreResources webAppMount="/WEB-INF/classes" base="/myproj2/web" className="org.apache.catalina.webresources.DirResourceSet"/>
    
            <PreResources webAppMount="/WEB-INF/lib"     base="/myproj/lib" className="org.apache.catalina.webresources.DirResourceSet"/>
            <PreResources webAppMount="/WEB-INF/lib"     base="/myproj2/lib" className="org.apache.catalina.webresources.DirResourceSet"/>
        </Resources>
    </Context>          
    

答案 1 :(得分:0)

Had hard time to make @wero solution to work.

Found another useful workaround for this:

Right click on project -> build path -> configure build path -> source

Than you just linking the source of the other project into servlet one.