springboot项目jar包打成war包需要什么,springboot打包成jar和war哪个好
00-1010 jar包和war包的区别【格式特点】【建立条件】告诉你如何将springboot项目打包成jar和war I .打包成jar1。首先,创建一个Spring Starter项目2。创建项目后,pom如下。3.把它做成JAR包(通过maven命令)II。以战争包裹的形式包裹。1.您可以对刚刚创建的项目进行更改。2.修改pom.xml3 3。如果我们的SpringBoot是用html作为首页开发的,那就没有问题。4.战争中的包装:使用首先给大家来讲一个我们遇到的一个奇怪的问题:. MVN清洁包装
1.我的一个springboot项目,用mvn install打包成jar,可以用java -jar项目名直接运行。jar通过用jdk换一台机器,没有任何问题。为什么这里没有tomcat也能运行?
2.然后我把它打包成战,放到tomcat里运行。我发现端口号变成了tomcat默认的8080(我在server.port里设置了端口8090),项目名也要加上。
也就是说我是在原机的思路下运行的,项目接口地址是ip:8090/listall。tomcat打包放入另一台机器就变成了IP :8080/project name/listall。这是为什么呢?
通过jar运行实际上是启动了内置的tomcat,所以用的是应用的配置文件中的端口
直接部署到tomcat之后,内置的tomcat就不会启用,所以相关配置就以安装的tomcat为准,与应用的配置文件就没有关系了
唉,现在编程基础教不了历史,也没人有兴趣学。总的来说,很多年前,孙还活着的时候,经过了用C写Html解析器的蛮荒期,一批最早的脚本程序进入了cgi时代。这时孙决定进入这个领域,于是为了彰显与众不同,显得高大上,他开发了servlet标准,并制定出了最早的jsp。并且给自己起了一个高大上的头衔JavaEE (Java企业应用标准,呸,不就是一堆用http提供服务的服务器吗,吹逼)。既然是企业标准,自然有自己的服务器标准。于是Servlet标准诞生了,这个标准实现的服务器叫做Servle容器服务器,Tomcat就是它的代表之一,它是Sun捐赠给Apache基金会的。那个时候Web server还是一个很高的概念,当时Java Web程序的标准是War包(其实就是一个Zip包),这就是War包的由来。后来随着服务器领域的反复演进,人们才发现为什么我们需要这么庞大的Web服务器,还要实现servlets之外的大量管理功能。简化和提取核心概念servlets不是更好吗?似乎Jetty最先做到了这一点,可嵌入的Servelet服务器出现了。去掉了很多非核心功能。后来tomcat也跟风了,再后来Jboss这个原本就笨重的传统JavaEE服务器也掀起了一股暗流来凑热闹。恰在此时,微服务的概念出现了,“用罐子,不要战争”。要求淘汰传统Servlet服务器的呼声已经开始。
00-10101,war是web模块,需要包含WEB-INF,可以直接运行;一般来说,jar只包含一些类文件,可以在声明Main_class后用java命令运行。
2.war包是一个web应用,通常是一个网站,打包部署到一个容器中;Jar包通常是开发时引用的通用类,可以打包存储和管理。
3.war是Sun提出的Web应用格式,也是很多文件的压缩包。这个包中的文件是按照一定的目录结构组织的;Classes目录包含已编译的Servlet类和JSP或Servlet所依赖的其他类(比如JavaBean),这些类可以打包到jar中,放在WEB-INF下的lib目录中。
JAR文件格式是基于流行的ZIP文件格式。与ZIP文件不同,JAR文件不仅用于压缩和发布,还用于部署和封装库、组件和插件,并且可以由编译器和JVM等工具直接使用。
00-1010安全性可以对JAR文件的内容进行数字签名。这样,可以识别签名的工具就可以有选择地授予你软件安全权限,这是其他文件做不到的,它还可以检测代码是否被篡改。减少下载时间如果一个applet被捆绑到一个JAR文件中,浏览器可以在一个HTTP事务中下载applet的类文件和相关资源,而不是为每个文件打开一个新的连接。压缩:JAR格式允许你压缩文件以提高存储效率。平台扩展:Java扩展框架提供了一种向Java核心平台添加功能的方法。这些扩展与JAR文件打包在一起(Java 3D和JavaMail由
Sun 开发的扩展例子)。WAR文件:就是一个Web应用程序,建立WAR文件,就是把整个Web应用程序(不包括Web应用程序层次结构的根目录)压缩起来,指定一个war扩展名。
【建立的条件】
需要建立正确的Web应用程序的目录层次结构。建立WEB-INF子目录,并在该目录下建立classes与lib两个子目录。将Servlet类文件放到WEB-INFclasses目录下,将Web应用程序所使用Java类库文件(即JAR文件)放到WEB-INFlib目录下。将JSP页面或静态HTML页面放到上下文根路径下或其子目录下。建立META-INF目录,并在该目录下建立context.xml文件。
给大家讲讲如何将springboot项目打包成jar和war
SpringBoot项目打包成jar很简单,也是SpringBoot的常用打包格式;本篇博客将SpringBoot打包成jar和war两种方式都记录下来;
先介绍将SpringBoot打包成jar包的方式:(以下示例是在idea中演示)
一、打包成jar
1.先new 一个Spring Starter Project
这里注意packaging默认为jar,不用修改.
2.创建完成后项目的pom如下
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description> <properties><java.version>1.8</java.version></properties> <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies> <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build> </project>
3.打成jar包(通过maven命令的方式)
在Terminal窗口,使用 mvn clean package 命令打包:
然后在target目录下就能看到打包好的jar包了
二、打包成war包形式
1.可以在刚才创建的项目上做改动
首先打包成war需要一个ServletInitializer类,这个类的位置需要和启动类在同一个文件下
(如果一开始选择war包形式,会自动创建此类)
2.修改pom.xml
修改pom.xml的war将原先的jar改为war;
3.如果我们的SpringBoot是使用html作为前端页面开发没有问题
但是如果我们想用jsp开发,这个时候就需要配置一些依赖了:主要是排除SpringBoot的内置Tomcat,添加javax.servlet-api和tomcat-servlet-api(SpringMVC还需要配置后缀);
最后的pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>demo</name><description>Demo project for Spring Boot</description> <properties><java.version>1.8</java.version></properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-servlet-api</artifactId> <version>8.0.36</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies> <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build> </project>
因为SpringBoot默认推荐的是html,而不是jsp;经过上面的修改就可以使用jsp进行开发了;
4.打包成war:使用mvn clean package
如下:
打包成功后,就可以将war包放在tomcat下的webapps下,然后运行tomcat,启动项目了;
记录下来,以后用到的时候看 ^_^;
(当然了,在创建项目的时候直接选择package为war,直接就能打成war包了)
当选择war为打包方式创建项目时,ServletInitializer是默认直接创建的
此时,pom文件如下
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>demo</name><description>Demo project for Spring Boot</description> <properties><java.version>1.8</java.version></properties> <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies> <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build> </project>
直接 mvn clean package就能打包成功
以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。