18

是否可以配置 Tomcat,使其在开发时在单独的位置查找我的“webapp”目录?

我的 git 源代码在一个目录中,而 tomcat 安装在另一个目录中。我不想每次对 CSS 或 Javascript 进行简单更改时都必须在两个地方进行更改,或者手动复制文件,或者重新构建/部署。


编辑- 2013 年 2 月 21 日

不幸的是,这些建议都没有奏效,我怀疑这可能是因为我没有提供足够的信息来说明我是如何布置的。

我在我的主目录(我在 Mac 上)的一个名为“开发”的目录中安装了 Tomcat。

/Users/dbrogdon/Development/apache-tomcat-7.0.35

我旁边有我的 git 源。

/Users/dbrogdon/Development/myproject

在 myproject 目录中,我的实际 Web 文件位于:

/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp

当我编译时,我将 appname.war 放入

/Users/dbrogdon/Development/apache-tomcat-7.0.35/webapps

根据该更新信息,我应该在 myconf/server.xml或中提供什么作为我的 docBase conf/Catalina/localhost/appname.xml

4

7 回答 7

3

在您的tomcat 安装中,在“conf”目录下,您将找到一个文件server.xml。在该文件中搜索标签“主机”。你会发现类似

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

将appbase更改为您的 Web 应用程序目录的父文件夹。假设您的应用程序“myapp”目录位于 c:\git\source 下,将 appBase 设置为“c:\git\source”

重启你的tomcat。现在,您的 tomcat 将“c:\git\source”中查找它必须部署的所有 Web 应用程序,而不是webapps

链接到描述appbase使用 的 tomcat 配置http://tomcat.apache.org/tomcat-7.0-doc/config/host.html

此虚拟主机的 Application Base 目录。这是一个目录的路径名,其中可能包含要部署在此虚拟主机上的 Web 应用程序。您可以指定绝对路径名或相对于 $CATALINA_BASE 目录的路径名。有关自动识别和部署 Web 应用程序的更多信息,请参阅自动应用程序部署。如果未指定,将使用 默认的webapps

于 2013-02-15T20:51:00.583 回答
3

做你期待的事情的可能方法

  • 配置 Apache Web 服务器以提供静态内容并将动态内容路由到 Tomcat 服务器。这是使用 mod jk 连接器完成的,该连接器将 JSP 请求代理到 tomcat,但通过传递此代理来提供静态内容,如图像、js 等

完成使用worker.properties

<Location *>
SetHandler jakarta-servlet
SetEnvIf REQUEST_URI \.(html|png|gif|jpg|css|js)$ no-jk
</Location>

这可能是不可取的,因为它会改变您的所有部署架构

  • Zenil 提出的在您的 conf 中配置 server.xml 的解决方案

限制将是部署在您的 tomcat 中的所有应用程序都将从D:/newWebApps. 这可能不符合您的目的,因为您只需要将源存储库中的应用程序与您的 tomcat 映射。

  • 我认为在给定的情况下,以下内容更适合您

创建文件applicationName.xml并定义以下内容

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="D:\newWebApps" path="/js/*" />

并将此文件放在您的\conf\Catalina\localhost目录中。tomcat 会自动选择这个

现在您可以通过以下方式访问它

http://servername:8080/applicationName/js/anything.js

有关在 tomcat 默认目录之外设置 docBase 的更多详细信息,请参阅此http://tomcat.apache.org/tomcat-7.0-doc/config/context.html

于 2013-02-20T16:24:37.600 回答
2

You can use a local Apache server, and rewrite the HTML/CSS/JS/ files to be picked up from a separate location.

See this question for an example how to rewrite JS files: HOWTO: rewrite requests for images, css and js to different folders for each application?

Now you can configure Apache to go to Tomcat for the tomcat URLs, but perform these rewrites in the apache config and css/js/html files can be picked up from a different folder entirely.

You might be able to use this Tomcat Filter: http://tuckey.org/urlrewrite/, though you would still need an apache web server to host the static files, you could use Tomcat to access the main tomcat URLs and add redirects to your apache instance for all the static files. This saves having to configure mod_jk or something with Apache.

于 2013-02-14T17:20:14.877 回答
1

更新 server.xml 并修改应用程序的“主机”,有两个目的:

1)指向您的 git 源目录,以便 tomcat 从中启动您的应用程序。这将避免必须在两个地方进行更改或复制更改。

需要更改:更新应用程序的“主机”并将“appBase”设置为您的 git 源目录。

<Host name="localhost"  appBase="/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp"
            unpackWARs="true" autoDeploy="true">

2)添加一个单独的位置来提供您的静态内容。这将帮助您避免每次更改 css/js 时重新启动 tomcat

需要更改:添加上下文以提供您的 js 和 css

<Host name="localhost"  appBase="/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp"
            unpackWARs="true" autoDeploy="true">
    <Context docBase="/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp/js/" path="/js/*" />
    <Context docBase="/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp/css/" path="/css/*" />
</Host>
于 2013-02-21T15:54:59.457 回答
1

如果我正确理解了这个问题,您只希望 tomcat 的 webapps/MY_WEBAPP 指向您签出 git 存储库的内部,这样您就可以“一次”修改它们。假设您只是在编辑静态资源,我认为 tomcat 不会缓存它们,因此您可以通过创建从 tomcat 的 webapps/ 到您的 git 文件夹位置的符号链接来摆脱困境。或者从 webapps/x/y 符号链接回到你的 git 等效文件夹(甚至是特定文件)。

我也听说过tomcat可以“热交换”JSP类和静态的,所以如果它是相关的:how to enable hot deploy in tomcat

于 2017-10-12T17:19:33.127 回答
0

通过定义额外的上下文应该可以使用单独的位置。请参阅http://www.coderanch.com/t/474965/Tomcat/Deploying-application-webapps-tomcathttp://tomcat.apache.org/tomcat-6.0-doc/config/context.html

于 2013-02-14T17:18:21.977 回答
-2

在IDE中打开git源码时,添加tomcat服务器后,可以配置tomcat的'Runtime Environment'引用到你的tomcat目录下的那个。

于 2013-02-12T00:56:24.443 回答