关于传统项目打成war包的的分析
技术在不断的革新,以前的项目没有jar管理工具时,都是手动将依赖的jar拷贝到项目之下,然后Build Path,之后Maven出现了,出现了jar包中央仓库,所有的jar包资源集中在这里,免去频繁去网络上查找jar包的麻烦。Maven采用坐标对一个jar进行定位,使每个jar包在中央仓库中有唯一标识。后面出现的Gradle,原理和Maven类似,且有更多的新特性。
说回传统项目,通过Eclipse创建一个动态web项目(Dynamic Web Project),其目录结构如下:
│ .classpath
│ .project
│
├─.settings
│ .jsdtscope
│ org.eclipse.jdt.core.prefs
│ org.eclipse.wst.common.component
│ org.eclipse.wst.common.project.facet.core.xml
│ org.eclipse.wst.jsdt.ui.superType.container
│ org.eclipse.wst.jsdt.ui.superType.name
│
├─build
│ └─classes
├─src
└─WebContent
├─META-INF
│ MANIFEST.MF
│
└─WEB-INF
│ web.xml
│
└─lib
以点开头的文件或者文件夹:classpath project settings等都是由Eclipse创建,一般忽略不上传到git中(gitignore)https://stackoverflow.com/questions/44657300/what-project-files-are-supposed-to-ignore-in-gitignore-file
build 是编译后放class文件的位置,这是Eclipse配置,可以修改,一般部署到Tomcat中后 class文件会放在WEB-INF/classes中(https://blog.csdn.net/tony_java_2017/article/details/80839313)
src 源码文件
WebContent web项目的根目录文件夹(MyEcplise创建的话是WebRoot,二者没有本质区别 https://blog.csdn.net/u013938165/article/details/21613573)
项目打成war包后放到tomcat中,启动tomcat项目会被解压,解压后的文件如下:
│
├─META-INF
│ MANIFEST.MF
│
└─WEB-INF
│ web.xml
│
├─classes
└─lib
结构和WebContent一致,src中的源码编译后放在了classes文件夹下。
后面的SpringBoot直接内部集成了Tomcat容器,打成jar包就可以运行。不过实际情况也有将SpringBoot打成war包放在Tomcat中运行,不过失去了SpringBoot的一些特性,将SpringBoot项目打成war包后可以看到结构如下:
│
├─META-INF
│ │ MANIFEST.MF
│ │
│ └─maven
│ └─com.company
│ └─electric
│ pom.properties
│ pom.xml
│
├─org
│ └─springframework
│ └─boot
│ └─loader
│ │ ExecutableArchiveLauncher$1.class
│ │ ExecutableArchiveLauncher.class
│ │ JarLauncher.class
│ │ ...
│ │
│ ├─archive
│ │ Archive$Entry.class
│ │ Archive$EntryFilter.class
│ │ Archive.class
│ │ ...
│ │
│ ├─data
│ │ ByteArrayRandomAccessData.class
│ │ RandomAccessData$ResourceAccess.class
│ │ RandomAccessData.class
│ │ ...
│ │
│ ├─jar
│ │ AsciiBytes.class
│ │ Bytes.class
│ │ CentralDirectoryEndRecord.class
│ │ ...
│ │
│ └─util
│ SystemPropertyUtils.class
│
└─WEB-INF
├─classes
│ │ application.properties
│ │
│ └─com
│ └─company
│ └─electric
│ │ ElectricApplication.class
│ │
│ └─controller
│ IndexController.class
│
├─lib
│ classmate-1.3.4.jar
│ hibernate-validator-5.3.6.Final.jar
│ jackson-annotations-2.8.0.jar
│ ...
│
└─lib-provided
spring-boot-starter-tomcat-1.5.13.RELEASE.jar
tomcat-annotations-api-8.5.31.jar
tomcat-embed-core-8.5.31.jar
tomcat-embed-el-8.5.31.jar
tomcat-embed-websocket-8.5.31.jar
结构基本一致。
将 SpringBoot 项目打成 jar 包后,其目录结构如下:
│
├─BOOT-INF
│ ├─classes
│ │ │ application-dev.properties
│ │ │ application-pro.properties
│ │ │ application.properties
│ │ │
│ │ └─com
│ │ └─company
│ │ └─fetch
│ │ │ FetchPropertiesApplication.class
│ │ │
│ │ └─controller
│ │ IndexController.class
│ │
│ └─lib
│ classmate-1.4.0.jar
│ hibernate-validator-6.0.13.Final.jar
│ jackson-annotations-2.9.0.jar
│ jackson-core-2.9.7.jar
│ ...
│
├─META-INF
│ │ MANIFEST.MF
│ │
│ └─maven
│ └─com.company
│ └─fetch_properties
│ pom.properties
│ pom.xml
│
└─org
└─springframework
└─boot
└─loader
│ ExecutableArchiveLauncher.class
│ PropertiesLauncher$ArchiveEntryFilter.class
│ PropertiesLauncher$PrefixMatchingArchiveFilter.class
│ PropertiesLauncher.class
│ ....
│
├─archive
│ Archive$Entry.class
│ Archive$EntryFilter.class
│ Archive.class
│ ...
│
├─data
│ RandomAccessData.class
│ RandomAccessDataFile$1.class
│ RandomAccessDataFile$DataInputStream.class
│ ...
│
├─jar
│ AsciiBytes.class
│ Bytes.class
│ CentralDirectoryEndRecord.class
│ ...
│
└─util
SystemPropertyUtils.class
INSERT
关于传统项目打成war包的的分析的更多相关文章
- idea将项目打成war包
idea将项目打成war包(转载) 2018年02月28日 20:08:03 沈行的专栏 阅读数:13773更多 个人分类: Java 首先点击这里进入项目的配置页面 在Artifacts栏里点击 ...
- 【Maven】项目打包-war包-Jar包[IDEA将项目打成war包]
[Maven]项目打包-war包-Jar包[IDEA将项目打成war包] 2017年01月31日 00:21:06 阅读数:22912 标签: ideamaven发布博客插件 更多 个人分类: ❷ J ...
- 如何将一个项目打成war包?
如何将一个项目打成war包?进入该项目所在目录jar -cvf myProjec.war myProject
- 将web项目打成war包部署在tomcat步骤
将web项目打成war包部署在tomcat步骤 1.将自己的项目打成war包. 2.将打包好的war复制到${tomcat.home}/webapps项目下. 3.在${tomcat.hom}/con ...
- Web项目打成war包部署Tomcat时运行startup.bat直接闪退部署失败解决方案
即上篇通过将web项目打成war包部署到Tomcat服务器,解决mysql问题后,又出现了新问题,真是一波三折,所以将解决过程分享给大家,希望能帮助到小伙伴们~ 将打好的war包拷贝到Tomcat的w ...
- 使用Ant将项目打成war包
现在很多项目Java基本都是基于maven管理的,maven对于jar包管理和打包的方便这里就不再赘述,但是如果没有使用maven管理如何将一个Java Web项目打成war包呢,这里推荐使用Ant. ...
- springboot项目打成war包
在某种情况下,比如..........之下,我们不得不,将springboot打成war包 1.在pom.xml文件中修改 <packaging>war</packaging> ...
- IDEA将web项目打成war包
非Maven项目打包方式 按ctrl+滚动鼠标滚轮就能放大浏览器看图片了.或者将图片拖到新窗口打开. 然后点击OK,然后build一下.然后去classes文件夹下面找就能找到打成war包的项目 ...
- springboot将项目打成war包
1. 将项目的打包方式改为war包 <groupId>com.cc</groupId> <artifactId>aaaaaa</artifactId> ...
随机推荐
- 解题(MiGong--迷宫问题(深度搜索))
题目描述 定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5 × 5数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, ...
- 批量执行命令(SSH)
for a in {1..6} ; do scp /etc/hosts enc-bigdata0$a:/etc/hosts ; done
- input type='number'时,maxlength属性无效
<input type="number" oninput="if(value.length>11)value=value.slice(0,11)" ...
- Android 性能测试之内存 --- 追加腾讯性能案例,安卓抓取性能扫盲帖
内存测试: 思路 目前做的是酒店APP,另下载安装几个个第三方酒店的APP以方便对比(相当于可以做竞品测试) 数据的获取来源是ADB底层命令,而且最好是不需要root权限,因为很多手机root很麻烦或 ...
- Python+Selenium学习--启动及关闭浏览器
场景 页面上弹出的对话框是自动化测试经常会遇到的一个问题:很多情况下对话框是一个iframe,如之前iframe介绍的例子,处理起来稍微有点麻烦:但现在很多前端框架的对话框是div 形式的,这就让我们 ...
- 阿里云视频直播API签名机制源码
阿里云视频直播API签名机制源码 本文展示:通过代码实现下阿里视频直播签名处理规则 阿里云视频直播签名机制,官方文档链接:https://help.aliyun.com/document_detail ...
- 【linux】常见问题&常用命令笔记
1.重启以及关机命令: Linux centos重启命令: (1)reboot 普通重启 (2)shutdown -r now 立刻重启(root用户使用) (3)shutdown -r 10 过 ...
- web接口的开发
老样子,抛出一个问题:什么是接口? 不解释了,百度吧. 了解起来先从HTTP开始说起吧. HTTP协议的特点: 1,无连接,就是指每次连接都仅仅只处理一个请求,服务器处理完客户的请求之后,收到客户的应 ...
- c++ 中map 的find 函数用法
Map中,find函数用来定位数据出现位置,当含有该数据,即查找成功时,返回数据所在未知的迭代器, 如果查找失败,则返回end()函数所在的迭代器,因此用是否等于end来判断是否查找成功. 程序示例: ...
- 关于vuex状态管理模式架构
一. 什么是vuex 集中存储管理所有组件的状态 并以相应的规则保证以一种可预测的方式发生变化. 例子: 实现加减 <p>{{count}} <button @click=" ...