电话+V:159999-78052 ,欢迎咨询war包需要编译吗为什么,[python实用课程],[C++单片机原理],[C#网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]
jar包和war包的区别:
1、war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块;jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的。
2、war包是做好一个web应用后,通常是网站,打成包部署到容器中;jar包通常是开发时要引用通用类,打成包便于存放管理。
3、war是Sun提出的一种Web应用程序格式,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织;classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)可以打包成jar放到WEB-INF下的lib目录下。
src包是在开发时辨别目录的包名,是泛指java程序放置的路径
war包是开发完成以后,先通过编译,然后压缩的一种打包方式,往往运行在服务器上的是war包,而不是java文件,war包中的java文件被编译成.class文件
一、修改pom.xml文件将默认的jar方式改为war:
<groupId>com.example</groupId><artifactId>application</artifactId><version>0.0.1-SNAPSHOT</version><!--默认为jar方式-->
<!--<packaging>jar</packaging>--><!--改为war方式-->
<packaging>war</packaging>二、排除内置的Tomcat容器(两种方式都可):
1.排除spring-boot-starter-web中的Tomcat
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency>2.添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><!--打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。
相当于compile,但是打包阶段做了exclude操作-->
<scope>provided</scope></dependency>三、继承
org.springframework.boot.web.servlet.support.SpringBootServletInitializer,实现configure方法:
为什么继承该类,
SpringBootServletInitializer源码注释:
注意,如果您正在构建WAR文件并部署它,则需要WebApplicationInitializer。
如果你喜欢运行一个嵌入式Web服务器,那么你根本不需要这个。
启动类代码:
@SpringBootApplicationpublicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.run(Application.class,args);}}1.方式一,启动类继承
SpringBootServletInitializer实现configure:
2.方式二,新增加一个类继承
SpringBootServletInitializer实现configure:
//此处的Application.class为带有@SpringBootApplication注解的启动类
returnbuilder.sources(Application.class);}}注意事项:
使用外部Tomcat部署访问的时候,application.properties(或者application.yml)中配置的
server.port=server.servlet.context-path=将失效,请使用tomcat的端口,tomcat,webapps下项目名进行访问。
为了防止应用上下文所导致的项目访问资源加载不到的问题,
建议pom.xml文件中<build></build>标签下添加<finalName></finalName>标签:
<build><!--应与application.properties(或application.yml)中context-path保持一致-->
<finalName>war包名称</finalName>
<plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>使用mvn命令行打包,运行:
clean是清除之前的包,-Dmaven.test.skip=true是忽略测试代码
jar方式打包,使用内置Tomcat:mvncleaninstall-Dmaven.test.skip=true
运行:java-jar包名.jar
war方式打包,使用外置Tomcat:mvncleanpackage-Dmaven.test.skip=true
运行:${Tomcat_home}/bin/目录下执行startup.bat(windows)或者startup.sh(linux)
电话+V:159999-78052
机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。