关于传统项目打成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> ...
随机推荐
- Python 面向对象基础(类、实例、方法、属性封装)
python是面向对象语言,一切皆对象. 面向过程: 变量和函数. “散落” 在文件的各个位置,甚至是不同文件中.看不出变量与函数的相关性,非常不利于维护,设计模式不清晰. 经常导致程序员,忘记某个变 ...
- RelativeLayout 相对布局
根据父容器来定位: 想位于哪,哪个属性就设置为true 左对齐:android:layout_alighParentLeft 右对齐:android:layout_alighParentRight 顶 ...
- 转Genymetion
http://www.cnblogs.com/rainboy2010/p/6387770.html 介绍 Genymotion是一款出色的跨平台的Android模拟器,具有容易安装和使用.运行速度快的 ...
- 问题1:鼠标指向导航栏li,但li中a样式未改变
<!--HTML代码--><div class="nav-mid-left"> <ul> <li><a href=" ...
- redis(三)积累-基本的取值和设值
1. 先把redis的连接池拿出来, JedisPool pool=new JedisPool(new JedisPoolConfig(),"127.0.0.1") Jedis ...
- eclipse 安装python后pydev不出现
一.环境 windows 7 64bit eclipse 4.5.2 pydev jdk7u55 二.安装步骤 1. 安装JDK eclipse依赖于java环境,所以需要安装java运行环境JRE. ...
- django分页的东西, 不详细, 但是也足够了。
视图函数中的代码 from django.shortcuts import render, HttpResponse, redirect import json from django.core.pa ...
- echarts柱形图x轴显示不全或者每隔一个不显示的问题
问题原因可能:x轴数据间隔太小: 问题解决: 1.调整间隔属性 xAxis: { type: 'category', //坐标轴斜着显示 axisLabel: { interval:0, rotate ...
- jqPaginator分页(每次只取一页数据)
应用技术点:jqPaginator.template7.bootstrap.css 参考网址: jqPaginator:http://jqpaginator.keenwon.com/#a3 templ ...
- ios证书安装和打包流程
iOS开发流程 1.拿到源文件 2文件目录大致名字 一.证书配置 参考网站:http://www.jianshu.com/p/9d9e3699515e (证书配置参考地址) 准备工作 首先要有苹 ...