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

How can I avoid from deploying jars into the web content folder while using tomcat?

所以我遇到了一个拖慢我的开发进程的问题。

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

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

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

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

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

有什么方法可以让 eclipse 中的 tomcat 服务器真正查看项目的 src 文件夹而不是查找 jars?

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

主要涉及以下内容:

  1. 您有一个带有 bin 文件夹的 eclipse 项目,依赖于 jar 文件,可能依赖于其他项目和一个包含 webapp 资源的 web 文件夹,其中包括一个 WEB-INF 文件夹.
  2. 不是部署到 Tomcat,而是在 Tomcat 中创建一个上下文 server.xml 指向 Tomcat 到 运行 应用程序所需的项目资源. Tomcat 然后从项目位置获取 类 和资源。
  3. 在您进行了一些开发并希望 Tomcat 获取您使用 Tomcat 管理器重新启动应用程序的更改。管理器有一个基于 HTTP 的界面,所以这甚至可以从命令行完成。

上面的 link 描述了如何为 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>          

很难使@wero 解决方案起作用。

为此找到了另一个有用的解决方法:

右键单击项目 -> 构建路径 -> 配置构建路径 -> 源

你只是将另一个项目的源链接到一个 servlet。