首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在IntelliJ中在本地Tomcat上部署Spring

在IntelliJ中在本地Tomcat上部署Spring
EN

Stack Overflow用户
提问于 2018-09-24 14:24:48
回答 1查看 3.8K关注 0票数 0

下午好

我是Spring和Spring的新手,通常我使用eclipse和JSF。我正在一个项目中使用FrontEnd的角和后端的Spring,我有下面的Maven结构

代码语言:javascript
代码运行次数:0
运行
复制
 PARENT
   FRONTEND
     pom.xml
   BACKEND
     pom.xml
pom.xml

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

代码语言:javascript
代码运行次数:0
运行
复制
<packaging>war</packaging>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

我不想使用嵌入式Tomcat服务器。在Intellij中,我将项目导入为Maven项目,在Run/Debug配置中,除了默认的Spring配置之外,我还创建了另一个配置,它具有指向*.war工件的“Jar路径”,并将Maven目标配置为"Maven目标包“。

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

代码语言:javascript
代码运行次数:0
运行
复制
 o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''

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

所以我的问题是:

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

在一个JSF项目中的Eclipse中,我只是向项目中添加了一个服务器,eclipse构建并部署了应用程序,并对其进行了管理。

事先谢谢,致以良好的问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-25 18:08:41

1 :如何在本地Tomcat而不是embedded中部署和运行Intellij的应用程序。已经提供了作用域,这样嵌入的tomcat就不会包含在您的人工制品中。但是,IntelliJ可以选择在运行时加载类路径上提供的依赖项。(它被称为Include dependencies with "Provided作用域“,可以在Configuration选项卡下找到,然后在spring的Environment部分找到。

与使用spring引导运行配置不同,您还可以自己在本地安装tomcat,并使用应用服务器插件对其进行管理和部署。

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

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

我不能说它是否更好,但我有一个类似的设置使用不同的方法。您可以在这里查看我的回购:https://github.com/phazebroek/tour-of-rockstars,客户端模块包含前端角应用程序,api是spring引导后端。客户端使用frontend-maven-plugin构建它,并将输出置于目标路径中。然后,在maven验证阶段,我的api模块利用maven-resources-plugin插件将这些插件复制到我的spring引导目标目录的静态文件夹中。这的效果是,我的角度应用程序打包,并包括在我的war文件的后端弹簧引导应用程序的静态文件夹,以便我可以服务它的内容与弹簧。例如,如果您在:8080上运行您的应用程序,您可以在同一个端口上到达您的角应用程序。例如:8080/app/foo。

请注意,您应该使用/api作为REST端点的前缀,以避免与您的角度视图发生冲突:-)例如,如果您有一个名为/foo的REST端点,但是您也有一个与url /foo冲突的角小部件。(我还没有修复那个存储库的问题.)

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

另外,控制器包含一个注释@CrossOrigin(origins = "*"),当它以独立应用程序的形式在另一个端口上运行时,它允许来自角度应用程序的请求。当然,这应该只用于开发模式!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52481504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档