我有一个多Maven模块的Spring Boot项目。可以说,父“服务”和“配置”中有2个模块。服务取决于配置。 config模块包含数据库配置代码(cassandra db)的类。 我在服务模块的pom中添加了config模块作为依赖项。 Sprinngboot应用程序在本地运行良好。 父pom具有包装作为pom。子模块即服务和配置都有打包成jar的形式。我不需要开战,因为不需要webapp。它只是其余的微服务。 为了打包项目,我在root pom级别执行了“ mvn package”。它为单个模块创建了jar。服务模块是定义主要方法的模块。 我在服务模块级别创建清单文件,并将服务模块的jar部署在云中。应用程序也可以在云上正常运行。我相信服务模块的jar隐式包含了配置模块的必需依赖项,因为我已经将config定义为服务模块pom中的依赖项。
接下来,如果我只想在config模块中进行一些修改,即使服务没有变化,它仍然需要创建服务jar并将其部署到云中吗? 要么 有没有办法我只能在云中部署jar配置模块?如果是,我如何将我的服务模块与云中的服务模块绑定以保持其正常运行?
推荐的multimaven项目云部署方式是什么?
修改:1 为了使问题更加清楚和精确,我正在寻找在云中进行部署的标准方法。我提出了目前我如何进行部署的步骤,并参考了我在当前步骤中应该做的改进。 我有3个pom.xml文件。 1个父母和2个孩子。另外,配置模块在服务模块的pom.xml中被定义为依赖项
要按照我正在执行的步骤进行部署-
接下来,假设我在配置模块类代码中进行了修改。我如何才能将配置模块的jar部署在云中?我的应用程序仍然可以工作吗?
以前,我只部署了服务模块的jar,而没有部署配置模块的jar。应用运行正常。但是在将来,如果我仅在配置模块中进行更改并且不接触服务模块,我是否仍需要像最初那样创建服务罐,或者有一种方法可以为修改后的配置模块重新创建罐子仅部署。
答案 0 :(得分:1)
您需要一个父项目来将其全部结合在一起:
/login
您需要一个配置项目作为父项的子项,例如:
@Configuration
public class MvcConfig implements WebMvcConfigurer {
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
}
}
最后是您将要部署的启动应用程序,它依赖于上述config服务:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
</parent>
<groupId>com.greg</groupId>
<artifactId>boot-multi-module-example</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<modules>
<module>service</module>
<module>config</module>
</modules>
</project>
答案 1 :(得分:1)
接下来,假设我在配置模块类代码中进行了修改。我如何才能将配置模块的jar部署在云中?我的应用程序仍然可以工作吗?
不可能部分部署到Cloud Foundry。我的意思是,您不能从您的应用程序中提取一个JAR文件并将其交换到现有的应用程序代码包中。无论更改有多小,每次更改代码时都需要执行cf push
。
运行cf push
时,您正在向Cloud Foundry发送“完整”的应用程序代码包以运行。如果您更改了该完整捆绑包的任何部分,则需要再次cf push
。听起来效率低下,但是cf push
很聪明,会跳过服务器上已经存在的文件,因此您会注意到后续的推送变得更小,更快。
尽管如此,您仍然需要登台并重新启动应用程序。这是不可避免的,因为您无法就地更改应用程序。这将使雪花或与水滴分离的应用程序被视为不良做法。
长话短说...
您的更改将被部署。