打包:JAR、EAR、WAR
war
是一个 Web 模块,其中需要包括 WEB-INF,是可以直接运行的 WEB 模块。而 jar
一般只是包括一些 class
文件,在声明了 main_class
之后是可以用 java
命令运行的。
它们都是压缩的包,拿 Tomcat 来说,将 war
文件包放置它的 \webapps\
目录下,启动 Tomcat,这个包可以自动进行解压,也就是你的 web
目录,相当于发布了。
war
包:是做好一个 Web 应用后,通常是网站,打成包部署到容器中。jar
包:通常是开发时要引用通用类,打成包便于存放管理。ear
包:企业级应用,通常是 EJB 打成ear
包。
所有的包都是用 jar
打的,只不过目标文件的扩展名不一样。
WAR 是 Sun 提出的一种 Web 应用程序格式,与 JAR 类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有 Html
和 Jsp
文件或者包含这两种文件的目录,另外还会有一个 WEB-INF
目录,这个目录很重要。通常在 WEB-INF
目录下有一个 web.xml
文件和一个 classes
目录,web.xml
是这个应用的配置文件,而 classes
目录下则包含编译好的 Servlet 类和 Jsp 或 Servlet 所依赖的其它类(如 JavaBean)。通常这些所依赖的类也可以打包成 JAR 放到 WEB-INF
下的 lib
目录下,当然也可以放到系统的 CLASSPATH
中,但那样移植和管理起来不方便。
JAR、WAR、EAR 在文件结构上,三者并没有什么不同,它们都采用 zip
或 jar
文件压缩格式。但是它们的使用目的有所区别:
| | | |
---|---|---|---|
英文 | | | |
包含内容 | class 、properties 文件,是文件封装的最小单元;包含 Java 类的普通库、资源(resources )、辅助文件(auxiliary files )等 | Servlet、JSP 页面、JSP 标记库、JAR 库文件、HTML / XML 文档和其他公用资源文件,如图片、音频文件等 | 除了包含 JAR、WAR 以外,还包括 EJB 组件 |
部署文件 | application-client.xml | web.xml | application.xml |
容器 | Application Servers ) | Servlet Containers ) | EJB Containers ) |
级别 | | | |
- Jar 文件(扩展名为
.jar
,Java Application Archive
)包含 Java 类的普通库、资源(resources
)、辅助文件(auxiliary files
)等。 - War 文件(扩展名为
.war
,Web Application Archive
)包含全部 Web 应用程序。在这种情形下,一个 Web 应用程序被定义为单独的一组文件、类和资源,用户可以对jar
文件进行封装,并把它作为小型服务程序(servlet
)来访问。 - Ear 文件(扩展名为
.ear
,Enterprise Application Archive
)包含全部企业应用程序。在这种情形下,一个企业应用程序被定义为多个jar
文件、资源、类和 Web 应用程序的集合。
每一种文件(.jar
,.war
,.ear
)只能由 应用服务器(Application Servers)、小型服务程序容器(Servlet Containers)、EJB 容器(EJB Containers)等进行处理。
EAR 文件包括整个项目,内含多个 EJB Module(jar
文件)和 WEB Module(war
文件)。EAR 文件的生成可以使用 winrar zip
压缩方式或者 jar
命令。
步骤:
先打包成 war
和 jar
,并写好 application.xml
,放到 META-INF
目录下,然后 jar cf
your_application.ear
your_war.war
your_jar.jar
META-INF/application.xml
, 打包,我这假设都在当前目录下,可以用 jar xf your_application.ear
解压
WAR的使用:
- 如果想生成
war
文件:可以使用如下命令:jar -cvf web1.war *
- 如果想查看
web1.war
中都有哪些文件,可以使用命令:jar -tf web1.war
- 如果想直接解压
web1.war
文件,可以使用命令:jar -xvf web1.war
- 另外,也可使用
winrar
软件选择zip
压缩方式,并将压缩文件后缀名改为war
即可压缩生成war
文件;同样使用winrar
软件可以强行打开war
文件,或者强行解压war
文件。 - 使用
jar
命令与winrar
软件的区别在于前者在压缩文件的同时会生成Meta-INF
文件夹,内包含MANIFEST.MF
文件。
总结:
何时使用 war
或者 jar
文件:当你的项目在没有完全竣工的时候,不适合使用 war
文件,因为你的类会由于调试之类的经常改,这样来回删除、创建 war
文件很不爽,最好是你的项目已经完成了,不改了,那么就打个 war
包吧,这个时候一个 war
文件就相当于一个 web
应用程序了;而 jar
文件就是把类和一些相关的资源封装到一个包中,便于程序中引用。