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 ...
随机推荐
- 常用操作提高效率 之 for 与in
问题如何而来: 对于刚参加工作的我 批量删除数据通常采用的是前端传递到后台一个对象的id字符串 通过逗号分隔的多个id 或者收的直接是一个id数组 两个原理一样第一个后台要在次使用split(& ...
- spring读取properties和其他配置文件的几种方式
1.因为spring容器的一些机制,在读取配置文件进行数据库的配置等等是很有必要的,所以我们要考虑配置文件的的读取方式以及各个方式的实用性 2.配置文件的读取方式我这里介绍2种,目的是掌握这2种就可以 ...
- Django笔记 —— Admin(Django站点管理界面)
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- 基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上)
基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上) 上周BOSS给分配任务让实现一下Mysql数据库的主从复制以及读写分离,然后花了一盏茶的功夫进行了调研,发现主从复制数据库进行一番 ...
- kindeditor 限制上传图片大小及宽高
进入:/kindeditor/plugins/image/image.js,替换其中的 self.plugin.imageDialog = function (options)方法,代码为: self ...
- 第一篇 Python安装与环境变量的配置
开发语言有很多种,为什么选Python? 先对各种开发语言做个初识和分类如下:高级语言:Python Java.PHP C# Go ruby C++... ---> 字节码低级语言:C.汇编 - ...
- ASP NET Core --- 资源塑形, HATEOAS, Media Type
参照 草根专栏- ASP.NET Core + Ng6 实战:https://v.qq.com/x/page/d07652pu1zi.html 一.Get返回资源塑形 1.添加集合塑形Enumerab ...
- Ubuntu 进阶命令——长期不定时更新
有时候远程连接服务器忽然中断或者不小心关掉了终端界面,正在运行的命令或者程序就会被强制停止.这时候,我们可以借助一些命令来避免这种情况的发生. nohup 不挂断地运行命令 & 在后台运行命令 ...
- android问题笔记集
开发工具:android studio2.2 调试:手机直连调试,版本(android6) 问题1: Error:Unable to start the daemon process. This pr ...
- JAVA的文件操作【转】
11.3 I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程 ...