我即将使用Spring Boot使用Spring Framework构建我的第一个使用Java的网站,并且在jar
中构建它更容易,但我对此有一些疑问。
一般有什么不同?
在jar
个文件中,视图位于/resources/templates
下,但在war
文件中位于/webapp/WEB-INF/
下。
有什么区别?我可以在在线主机上部署jar
吗?
答案 0 :(得分:8)
可以告诉Spring Boot生成一个'fat JAR',其中包含所有模块/服务的依赖项,并且可以使用java -jar <your jar>
运行。请参阅“使用Maven创建可执行JAR”here。
Spring Boot也可以告诉produce a WAR file,在这种情况下,你可能会选择将它部署到Web容器,如Tomcat或Jetty。
有关Spring Boot部署的更多详细信息here。
答案 1 :(得分:5)
spring-boot
应用程序作为胖*.jar
可以构建所谓的fat JAR
,它是具有嵌入式应用程序容器(*.jar
作为默认选项)的可执行Tomcat
文件。
各种构建系统都有spring-boot
个插件。以下是maven
:spring-boot-maven-plugin
要执行fat
*.jar
这种简单的运行命令:
java -jar *.jar
或使用spring-boot-maven
目标:
mvn spring-boot:run
spring-boot
应用程序构建为*.war
存档另一种选择是将您的应用程序作为旧式war
文件发送。它可以部署到那里的任何servlet容器。以下是逐步列出的方法:
packaging
更改为war
(谈论maven的pom.xml
)spring-boot
继承主要SpringBootServletInitializer
应用程序类并覆盖SpringApplicationBuilder configure(SpringApplicationBuilder)
方法(请参阅javadoc)scope
spring-boot-starter-tomcat
设为provided
答案 2 :(得分:4)
取决于您的部署。如果您计划将应用程序部署到现有Java EE Application Server(例如Tomcat),那么标准方法是执行war
构建。
当您使用胖jar方法时,您的应用程序将部署在spring boot提供的嵌入式应用程序容器中。请点击Deploying Spring Boot Applications获取更多信息。
答案 3 :(得分:2)
当我在本地免费部署jar问题时,我遇到了同样的问题。然后,我必须在服务器上进行演示。您可以通过更改pom.xml标记
来创建战争文件。<packaging>jar</packaging>
到
<packaging>war</packaging>
您的目标中将有一个战争文件,您可以将该战争文件部署到服务器上(在我的情况下为tomcat)
答案 4 :(得分:1)
如果需要将其部署在外部容器中,通常必须创建一个war文件(不必是可执行文件)。
如果要使用嵌入式容器,则可以选择创建可执行.jar文件或可执行.war文件。 AFAIK的唯一区别在于存档的布局,因此通常也就是源存储库的布局。
例如使用带有Maven / Gradle的标准文件夹结构,.jar的静态资源将需要位于src/main/resources/static
中,而.jar文件的静态资源则应位于src/main/webapp
中。
答案 5 :(得分:0)
war
文件是在应用服务器内运行的 Web 应用程序存档,而 .jar
是运行桌面应用程序的 Java 应用程序存档在用户的机器上。 war 文件是一种特殊的 jar 文件,用于打包 Web 应用程序,以便于将其部署到应用程序服务器上。
答案 6 :(得分:0)
简单易行的答案。
包装类型 jar
表示为独立应用程序,包装类型 war
表示为 Web 应用程序。