当前位置: 首页 新闻详细

jar包和war包的区别是什么?war包和src包src包分别是什么?有何区别

专业编程培训机构——完成蜕变以后轻松拿高薪

电话+V:159999-78052 ,欢迎咨询war包需要编译吗为什么,[python实用课程],[C++单片机原理],[C#网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]

一、jar包和war包的区别是什么?

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目录下。

二、war包和src包src包分别是什么?有何区别

src包是在开发时辨别目录的包名,是泛指java程序放置的路径

war包是开发完成以后,先通过编译,然后压缩的一种打包方式,往往运行在服务器上的是war包,而不是java文件,war包中的java文件被编译成.class文件

修改Jar包为War包

2019-10-1113:42·淼淼墩

一、修改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源码注释:

NotethataWebApplicationInitializerisonlyneededifyouarebuildingawarfileanddeployingit.

Ifyouprefertorunanembeddedwebserverthenyouwon'tneedthisatall.

war包需要编译吗为什么

注意,如果您正在构建WAR文件并部署它,则需要WebApplicationInitializer。

如果你喜欢运行一个嵌入式Web服务器,那么你根本不需要这个。

启动类代码:

@SpringBootApplication

publicclassApplication{

publicstaticvoidmain(String[]args){

SpringApplication.run(Application.class,args);

}

}

1.方式一,启动类继承
SpringBootServletInitializer实现configure:

@SpringBootApplication

publicclassApplicationextendsSpringBootServletInitializer{

publicstaticvoidmain(String[]args){

SpringApplication.run(Application.class,args);

}

@Override

protectedSpringApplicationBuilderconfigure(SpringApplicationBuilderbuilder){

returnbuilder.sources(Application.class);

}

}

2.方式二,新增加一个类继承
SpringBootServletInitializer实现configure:

publicclassServletInitializerextendsSpringBootServletInitializer{

@Override

protectedSpringApplicationBuilderconfigure(SpringApplicationBuilderbuilder){

//此处的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)

【WINDRISES EMPLOYMENT PROGRAMMING】尊享对接老板

电话+V:159999-78052

机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。

war包需要编译吗为什么
发布人:5932467931 发布时间:2024-09-13