下午好
我是Spring和Spring的新手,通常我使用eclipse和JSF。我正在一个项目中使用FrontEnd的角和后端的Spring,我有下面的Maven结构
PARENT
FRONTEND
pom.xml
BACKEND
pom.xml
pom.xml
FrontEnd生成一个webJar,它使用前端-Maven-插件构建角度应用程序,后端依赖于这个webjar。BackEnd pom.xml具有以下配置:
<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还是这个配置,我都会在运行控制台中看到以下日志
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构建并部署了应用程序,并对其进行了管理。
事先谢谢,致以良好的问候
发布于 2018-09-25 10: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 = "*")
,当它以独立应用程序的形式在另一个端口上运行时,它允许来自角度应用程序的请求。当然,这应该只用于开发模式!
https://stackoverflow.com/questions/52481504
复制相似问题