当前位置: 首页 > 知识库问答 >
问题:

在IntelliJ的本地Tomcat上部署Spring Boot

文志学
2023-03-14

下午好啊

我是Spring和Spring Boot的新手,通常使用EclipseIDE和JSF。我在一个项目中工作,该项目在前端使用Angular,在后端使用Spring Boot。我有下面的Maven结构

 PARENT
   FRONTEND
     pom.xml
   BACKEND
     pom.xml
pom.xml

前端生成一个webjar,它使用前端Maven插件构建Angular应用程序,后端依赖于这个webjar。后端pom。xml具有以下配置:

<packaging>war</packaging>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

我不想使用嵌入式Tomcat服务器。在Intellij中,我已经导入了一个Maven项目,在运行/调试配置中,除了默认的Spring Boot配置之外,我还创建了一个具有指向*. war工件的"Path to Jar"的项目,并将Maven目标配置为"Maven目标包"...

这样,当我运行此配置时,前端将被编译和构建。但是,无论是选择Spring Boot还是此配置,我都会在运行控制台中看到以下日志

 o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''

我想这意味着我正在嵌入式服务器中部署应用程序。

所以我的问题是:

1:我如何在本地Tomcat而不是嵌入式Tomcat中从Intellij部署和运行应用程序。2:是否有更好的配置来构建前端并在Intellij上自动部署后端?

在JSF项目中的EclipseIDE中,我只需向项目中添加一个服务器,Eclipse就可以在其中构建和部署应用程序,并管理一切。

提前感谢最好的问候

共有1个答案

田巴英
2023-03-14

1:我如何在本地Tomcat而不是嵌入式Tomcat中从Intellij部署和运行应用程序。您已经提供了上的作用域,因此嵌入的tomcat不会包含在您的人工制品中。IntelliJ有一个选项,可以在运行时在类路径上加载提供的依赖项。(它被称为Include dependencies with“Providedscope”,可以在配置选项卡下找到,然后在Spring Boot运行配置的环境部分找到。

你也可以自己在本地安装tomcat,并使用应用服务器插件来管理和部署它,而不是使用Spring Boot运行配置。

为“Tomcat”创建一个新的运行配置,然后选择“Local”。在这里,您将能够配置本地tomcat实例,以便它知道在何处部署它。

2:是否有更好的配置来构建前端并在Intellij上自动部署后端?

我不能说它是否更好,但我有一个类似的设置,使用不同的方法。请在此处查看我的回购协议:https://github.com/phazebroek/tour-of-rockstars客户端模块包含前端angular应用程序,api是spring boot后端。客户端使用前端maven插件构建它,并将输出放入目标路径。然后,在maven验证阶段,我的api模块利用maven资源插件plugin将它们复制到Spring Boot目标目录的静态文件夹中。这样做的效果是,我的angular应用程序被打包并包含在静态文件夹中后端spring boot应用程序的war文件中,这样我就可以用spring提供它的内容。例如,如果你在:8080上运行你的应用程序,你可以在同一端口上访问你的angular应用程序。e、 g.:8080/app/foo。

请注意,您应该使用/api作为RESTendpoint的前缀,以避免与角度视图发生冲突:-)如果您有一个名为/foo的RESTendpoint,但您也有一个带有url/foo的角度小部件,那么它将发生冲突。(我还没有解决该存储库的问题…)

额外注意:调用后端api从角应用程序在独立模式在不同的端口

另一方面,控制器包含注释@CrossOrigin(origins=“*”),当angular应用程序作为独立应用程序在不同端口上运行时,允许来自angular应用程序的请求。当然,这只能在开发模式中使用!

 类似资料:
  • 我正在寻找一种方法,可以在我选择的时候将战争工件部署到IntelliJ启动的Tomcat中。我有一个项目,它的配置启动了Tomcat8服务器并部署了一些工件。LaterI现在希望将更多来自不同项目的工件部署到同一个IntelliJ启动的Tomcat中。 步骤:启动包含Tomcat的项目 步骤:从另一个IntelliJ-project(从IDE内)部署war 步骤:从IntelliJ部署另一个war

  • 我阅读并关注了BallusC的以下帖子,但仍然困惑:如何在Tomcat上安装和使用CDI? 尝试安装焊缝2.2.9.最终和配置如上所述。我正在使用以下内容: JSF 2.2、EL 2.2、Servlet3、Java7 还有什么可能导致这个错误?

  • 我在为Tomcat服务器部署Spring guides中提供的Spring Boot+WebSocket+Stomp教程时遇到了一些麻烦 我正在使用gradle创建战争,其中我有以下依赖 基本上,我只添加了spring-boot-starter-tomcat依赖项以及war和idea插件。 代码可以在https://spring.io/guides/gs/messaging-stomp-webso

  • IntelliJ和Tomcat是否可以这样配置:当我保存类上的更改时,该类会被重新编译并部署到Tomcat,以便在我重新启动应用程序时可以看到更改? 这是可能的还是我需要使用像JRebel这样的工具? 我使用的是Intellij12.1.4

  • 问题内容: 我想设置全局变量,例如: 这该怎么做? 问题答案: 最简单的方法是使用来告诉您的应用程序是在开发模式下运行(使用AppEngine SDK)还是在现场(正在生产中)运行: IsDevAppServer报告App Engine应用程序是否在开发App Server中运行。 另外,您也可以使用其中包含此信息以及您的App版本的信息,并合并为一个字符串: ServerSoftware返回Ap