是否可以配置Tomcat,使其在开发过程中查找我的'webapp'目录的单独位置?
我将git源放在一个目录中,将tomcat安装在另一个目录中。我不想在两个地方进行更改,或者每次我对CSS或Javascript进行简单的更改时手动复制文件,或重建/部署。
<小时/> 编辑 - 2013年2月21日
不幸的是,这些建议都没有奏效,我怀疑这可能是因为我没有提供足够的信息来说明我的方法。
我将Tomcat安装在我的主目录(我在Mac上)的目录中,名为“Development”。
/Users/dbrogdon/Development/apache-tomcat-7.0.35
我旁边有我的git来源。
/Users/dbrogdon/Development/myproject
在myproject目录中,我的实际网络文件位于:
/Users/dbrogdon/Development/myproject/application/appname/src/main/webapp
当我编译时,我将appname.war放入
/Users/dbrogdon/Development/apache-tomcat-7.0.35/webapps
根据更新的信息,我应该在我的conf/server.xml
或conf/Catalina/localhost/appname.xml
中作为我的docBase提供什么?
答案 0 :(得分:3)
在tomcat安装中,在目录“conf”下,您将找到文件server.xml。在该文件中搜索标记“Host”。你会发现像
这样的东西<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
将 appbase 更改为您的网络应用程序目录的父文件夹。所以说您的应用程序“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 的默认值。
答案 1 :(得分:2)
可能的方法来做你期待的事情
在worker.properties
<Location *>
SetHandler jakarta-servlet
SetEnvIf REQUEST_URI \.(html|png|gif|jpg|css|js)$ no-jk
</Location>
这可能不太合适,因为它会更改所有部署架构
限制将是tomcat中部署的所有应用程序都将从D:/newWebApps
提供。这可能不适合您的目的,因为您只需要在源存储库中映射的应用程序你的雄猫。
创建文件applicationName.xml
&amp;定义以下
<?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 default diretories
之外设置docBase的更多详细信息,请参阅此http://tomcat.apache.org/tomcat-7.0-doc/config/context.html答案 2 :(得分:1)
您可以使用本地Apache服务器,并重写要从单独位置拾取的HTML / CSS / JS /文件。
有关如何重写JS文件的示例,请参阅此问题:HOWTO: rewrite requests for images, css and js to different folders for each application?
现在你可以配置Apache去Tomcat寻找tomcat的URL,但是在apache配置中执行这些重写,css / js / html文件可以完全从另一个文件夹中获取。
您可以使用此Tomcat过滤器:http://tuckey.org/urlrewrite/,虽然您仍然需要一个apache Web服务器来托管静态文件,但您可以使用Tomcat访问主要的tomcat URL并向您的apache添加重定向所有静态文件的实例。这节省了必须使用Apache配置mod_jk或其他东西。
答案 3 :(得分:1)
更新您的server.xml并修改应用程序的“主机”有两个目的:
1)指向tomcat的git源目录以启动你的应用程序。这样可以避免在两个地方进行更改或复制更改。
需要更改:更新应用程序的“主机”,并将“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>
答案 4 :(得分:1)
如果我理解正确的问题,你只需要tomcat的webapps / MY_WEBAPP指向你检查你的git存储库的内部,这样你就可以修改它们&#34;一次&#34;。假设您只编辑静态资源,我不认为tomcat会对它们进行缓存,因此您可以从tomcat的webapps /到git文件夹位置创建符号链接。或者从webapps / x / y返回到你的git等效文件夹(甚至特定文件)的符号链接。
我也听说过tomcat可以&#34; hotswap&#34; JSP类和静态,以防它相关:how to enable hot deploy in tomcat
答案 5 :(得分:0)
通过定义附加上下文,应该可以使用单独的位置。 请参阅http://www.coderanch.com/t/474965/Tomcat/Deploying-application-webapps-tomcat和http://tomcat.apache.org/tomcat-6.0-doc/config/context.html。
答案 6 :(得分:-2)
在IDE中打开git源代码后,添加tomcat服务器后,可以配置tomcat的“Runtime Environment”来引用tomcat目录中的那个。