Idea 部署非Maven项目
参考:http://m.blog.csdn.net/z69183787/article/details/78030857
以前一直很好奇,在idea中运行tomcat,把项目部署到其中,运行起来,然后我去tomcat目录下去看,根本找不到我部署的项目 那我的项目是咋运行的啊… - -
后来我就查啊查 ,纠结啊纠结,然后大概知道是咋回事了:
在idea中配置的tomcat,在运行时idea不会把项目放到该路径下,而是复制一份足够的配置文件,到 ${user.home}/.IntelliJIdea/system/tomcat 目录下:
也就是说每个项目都有属于自己的一份tomcat配置,互不干扰。
每个项目的配置文件夹中有一个 /conf/Catalina/localhost/ROOT.xml 文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="" docBase="D:\work\项目\target\xxx-web" />
- 1
- 2
其中,path是指在访问此项目时,是否需要添加额外的路径,如果为空,则直接使用域名或者ip就可以访问到该项目:127.0.0.1。这个值在ieda中的Run/Debug Configurations中可以配置:
docBase是指要运行的项目的部署位置,D:\work\项目 就是我的项目源代码的位置,target是由maven构建后生成的,D:\work\项目\target\xxx-web 目录就是maven build完成之后生成的项目,结构如下:
而idea启动tomcat的命令为:
也就是说,整个项目运行过程为:首先maven build项目,将构建结果写到项目的target目录下,然后idea复制一份tomcat的配置文件到${user.home}/.IntelliJIdea/system/tomcat 中,之后启动tomcat安装目录下的catalina.bat文件,tomcat读取配置文件,找到项目位置,然后就运行起来了。
在idea中运行tomcat,把项目部署运行起来,然后我去tomcat目录下去看,找不到我部署的项目 那我的项目是怎么运行起来的?
说明一下:这里是使用tomcat 部署成war exploded 而不是war包。
war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。
在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来。
如上,将两处都修改成Update resources即可。
webapps下面文件夹都翻了一遍,都没有发现部署的项目。
去work文件夹下也看了一遍,是空的。
后来发现,在idea中配置的tomcat,在运行时idea不会把项目放到自己的webapps路径下,而是复制三份文件到 ${user.home}/.IntelliJIdea/system/tomcat 目录下的各自项目。
我们进入该目录,看到如下(名称是通过我们的项目名转化而来):
也就是说每个项目都有属于自己的一份tomcat配置,互不干扰。
我们进入其中一个项目下,看到如下:(在自己的tomcat安装目录下是看不到日志的,日志在这里,还有一些配置文件)
每个项目的配置文件夹中有一个 /conf/Catalina/localhost/ROOT.xml 文件,内容如下:
其中,path是指在访问此项目时,是否需要添加额外的路径,如果为空,则直接使用域名或者ip就可以访问到该项目:127.0.0.1。这个值在ieda中的Run/Debug Configurations中可以配置:(即Application context)
如果现在我在Application context加上:/springSecurityDemo
Server这边会自动加入:springSecurityDemo/
这时候,我们运行tomcat之后,在conf/Catalina/localhost没有发现ROOT.xml,而是springSecurityDemo.xml文件,内容如下:
这时候项目的访问路径是:http://localhost:8145/springSecurityDemo/
docBase是指要运行的项目的部署位置,/myProject/springSecurityDemo 就是我的项目源代码的位置,build是由gradle构建后生成的,gradle build完成之后生成的项目,结构
如下:
而idea启动tomcat的命令在这里:
整个项目运行过程是:首先gradle build项目,将构建结果写到项目的build目录下,然后idea复制一份tomcat的conf、logs和work文件夹到${user.home}/.IntelliJIdea/system/tomcat 中,之后启动tomcat安装目录下的catalina.sh文件,tomcat读取配置文件,找到项目位置,然后就运行起来了。
-------------------------------------------------------------------------------------
如果是使用tomcat 部署成是war包。那么会不会就能在自己安装的tomcat中找到呢?
刚开始我将项目改为war部署的方式,但是运行之后tomcat中始终没有项目的文件。后来发现如果将当前的Application context设置为’/’,那么
tomcat也不会将项目部署到webapps中,因为这个相当于你项目的根路径。后来经过实践,发现这个Application context就是你项目在webapps路径下项目的根目录名。
Idea 部署非Maven项目的更多相关文章
- 非maven项目 idea project structure
原文链接:https://www.cnblogs.com/jajian/p/8081640.html 最近接手非maven项目,需要熟悉idea的project structure,以解决出现的环境报 ...
- 将Myeclipse非maven项目,导入到IDEA
# 将Myeclipse非maven项目,导入到IDEA 1. 打开原项目,复制“.classpath”文件路径,在IDEA中打开项目时,选此文件路径 2. 进入项目转换界面,默认一步步完成 3. 导 ...
- IntelliJ IDEA使用心得之非Maven项目篇
今天和大家分享下非Maven项目在IDEA中的配置方法,由于非Maven项目的配置方法基本相同,所以此篇只对不同点进行说明. 1.声明依赖库 我们可以使用库的方式来添加项目依赖,这是一个非常好的实践. ...
- idea-----Intellij IDEA配置tomcat(非maven项目)
Intellij IDEA配置tomcat(非maven项目) 引用: https://blog.csdn.net/springlovejava/article/details/78570241 ID ...
- Tomcat热部署:Maven项目一键部署到Tomcat服务器 - 支持多环境
参考:Eclipse中的Maven项目一键部署到Tomcat服务器 - 支持多环境部署 命令 debug模式设置关联源码 eclipse --> 项目右键 --> Debug As --& ...
- [Web开发(1)] MyEclipse/Eclipse 使用Tomcat部署Web/Maven项目经典错误
1.Tomcat启动报错:server tomcat start within 45 seconds 问题原因:由于eclipse默认Tomcat设置是启动时间为45s,所以在45s内没有启动成功就会 ...
- 使用jekins自动构建部署java maven项目(jdk1.7+tomcat7.0+jenkins2.19.3)
1.下载jenkins 地址:https://jenkins.io/index.html 本人下载了2.19.3版本的war包:jenkins.war 2.安装jenkins 拷贝jenkins.wa ...
- 非maven项目导入idea几点心得总结
这个问题一共有3种解决办法1. 你下载好的文件应该是src 和Webcontent是在同一个目录下的.只要把Webcontent放入到src下就行.这种就变成maven的目录结构.因为你这个目录结构应 ...
- 非maven项目下载maven的jar
很多时候我们需要jar,可惜项目不是maven的,但是我们只有一个maven的坐标,那怎么办? 比如: <dependencies> <dependency> <grou ...
随机推荐
- 形象的理解Strong和Weak
Strong Weak
- LINQ学习笔记——(1)添加扩展方法
目的: 对已存在类型的行为进行扩展 注意事项: 扩展方法是一种特殊的静态方法 扩展方法必须在静态类中定义 扩展方法的优先级低于同名的类方法 扩展方法只在特定的命名空间内有效 ...
- Visual Studio 2012安装包
点击下载
- LeetCode 23 ——合并 K 个排序链表
1. 题目 2. 解答 2.1. 方法一 在 合并两个有序链表 的基础上,我们很容易想到第一种解法,首先我们将第一个链表和第二个链表合并成一个新的链表,然后再往后依次合并接下来的每个链表即可. 假设每 ...
- Chrome 与 Firefox-Dev 的 DevTools
不管是做爬虫还是写 Web App,Chrome 和 Firefox 的 DevTools 都是超常用的,但是经常发现别人的截图有什么字段我找不到,别人的什么功能我的 Chrome 没有,仔细一搜索才 ...
- Spring定时器调用Hibernate方法无法获得SessionFactory的解决办法
由于在Spring定时器中无法通过注解的方式获取bean,因此需要通过原生的方式获取.获取session的方式如下: WebApplicationContext wac = ContextLoader ...
- lintcode-59-最接近的三数之和
59-最接近的三数之和 给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和. 注意事项 只需要返回三元组之和,无需返回三元组本身 样例 例如 S = ...
- vue 介绍的拓展
计算属性 <div id="example"> <p>Original message: "{{ message }}"</p&g ...
- 【python】python中的定义类属性和对像属性
python中变量是没有类型的可以绑定任意类型,但是在语法上不能声明变量. 那我们怎麽来声名一个变量呢? f=None 这样我们给着个变量绑定了以各None类型,我们随时可用重新绑定其它类型.这样我们 ...
- hdu 3033 I love sneakers!(分组背包+每组至少选一个)
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...