1.Tomcat部署项目的方式
- 前置信息:1.一个项目中 部署到Tomcat服务器上的内容并不是他的所有内容 而是包含字节码文件、依赖函数库以及网页资源在内的文件才会被部署到Tomcat服务器上 2.在获取项目对应的artifact时 你是可以选择获取解压版(exploded 即暴露的意思)还是压缩版(archive 即压缩的意思)的 3.项目文件压缩为war的操作中 压缩为zip在修改后缀名为war的行为很不严谨 替换的做法是利用idea的project structure中的artifact中的archive 就可以获取项目对应的war包 他会放置在out目录中 4.在project structure中创建项目中的artifact仅仅只是完成相应的配置操作 而是需要我们通过build手段才可以真正将artifact发布到out文件夹中
- 方式一:将web项目拷贝到%TOMCAT_HOME%/webapps目录中 项目名称就是ContextPath
- 方式二:将web项目压缩为war 然后将其拷贝到%TOMCAT_HOME%/webapps目录中 war名称就是ContextPath 启动Tomcat的过程中就会自动将war解压为普通文件夹(注意:压缩的对象并不是web项目 而是web项目下的内容)
- 方式三:在%TOMCAT_HOME%/conf/server.xml文件夹中的Host标签的最后编写Context标签 格式要求为<Context docBase=“项目路径” path=“ContextPath” /> Application Context就是ContextPath
- 方式四:在%TOMCAT_HOME%/conf/Catalina/localhost目录中创建一个xml文件 里面编写Context标签 格式要求为<Context docBase=“项目路径” /> path是可选的 因为path默认就是xml文件名称
- 方法一、方法二这两种方法的弊端在于一旦项目的体积很大的话 那么拷贝的时间就要求很长
- 方法三、方法四这两种方法的弊端在于一旦你的项目删除的同时配置信息没有删除的话 那么你的Tomcat启动就会出现问题
- idea中Tomcat部署项目的方式就是上述四种中的第四种方式 但是我们可能会觉得奇怪 为什么部署以后 在Catalina/localhost目录中并没有新建一个xml文件 这是idea避免tomcat遭受污染的所采取的行为 他会另行新建一个文件夹用于存放xml文件 也能够达到同样的效果 该文件夹就是CATALINA_BASE
2.传统开发中的常见痛点
- jar包的下载(体现在我们需要手动下载)、升级(体现在需要部分jar包替代)、依赖(一个jar包有可能依赖于其他若干个jar包)、冲突(不同的jar包有可能依赖于相同但不同版本的jar包 这就会引发冲突)
- 不同IDE之间的项目共享会出现问题(比如Java的开发工具:Eclipse、Idea 两者的项目结构不同 项目共享指定会引发问题)
- 单元测试(每一个类对应一个测试类 以传统项目的视角 一键测试这些测试类的话 是不可行的)
- 打包发布的过程过于繁琐
3.传统项目 vs Maven项目
假设存在多个项目的话 并且多个项目中所依赖的jar包都是相同的 那么从川传统的角度来看 硬盘中就会存在多个相同的jar包
同样的条件下 如果是Maven项目的话 那么他就会将jar包抽取为单独的文件 由多个项目去引用依赖 这样的好处在于减小体积 并且我们在进行项目共享的时候 共享的是除开jar包的项目 到时候会根据依赖关系自动下载所依赖的jar包
4.Maven
Maven主要用于自动化创建和管理Java项目
- 基于项目对象模型(POM 即Project Object Model)的概念
- 必须配置好JAVA_HOME 因为Maven是由Java编写的 Maven对Java版本的要求请参考对应版本
- 建议设置MAVEN_HOME 并且将MAVEN_HOME中的bin目录添加到path中
- 环境变量配置完毕以后 我们可以到cmd窗口中进行检测 输入mvn -v 如果出现版本号的话 证明配置完毕
- Maven项目的常见目录
- Maven采用的是约定优于配置的思想(比如不同IDE中的文件结构有所不同 采用Maven提供的默认文件结构即可于IDE无关)
- 创建Maven项目时 会自动创建Maven内置的默认文件结构 开发人员只要在相应的位置放置相应的文件即可(其中 war主要指的是打包以后的war文件 web项目资源则一般指的是idea中web目录下的资源 pom.xml为项目的描述文件 主要描述项目相关的版本、编码方式等信息)
- Maven项目的创建(建议通过cmd窗口自动创建)
- 具体指令为mvn archetype:generate
- 指令执行以后 他会从远程的中央仓库下载一些信息到本地仓库中 默认的本地仓库存放在C盘中 最好不要放在C盘中 我们可以通过MAVEN_HOME/conf/setting.xml修改默认的本地仓库存放位置(设置localrepository标签)
- 由于服务器位于国外 所以下载速度可能被限制了 为了提高下载速度 我们可以使用国内阿里巴巴提供的镜像服务器进行下载
- 如果我们利用maven管理的是Java项目的话 一般选择默认的7即可
- groupid和package设置为包名 即域名的倒置 比如:com.axihh.maven
- artifactid是项目名称 自行定义
- 版本号按照默认值即可