英文:
command "mvn spring-boot:run" does not take changes at run in other modules than main module?
问题
以下是翻译好的内容:
我有一个多模块的Maven项目,配置如下:
子模块 Maven:modul-main:包含主类和带有application.properties文件的config文件夹
子模块 Maven:modul-common:另一个子模块
如果我在modul-main中更新代码,那么运行以下命令:
mvn spring-boot:run
会在运行时看到我的更改。
但是,如果我在modul-common中更新代码,那么运行以下命令:
mvn spring-boot:run
无法看到我的更改。
1)如何解释这个现象?(这个命令在后台执行了什么?)想要理解!
2)在这个命令行中是否有选项可以解决这个问题?
英文:
i have a multi-modules maven, which is configured like that :
sub-module maven : modul-main : contains the Main class and config folder with an application.properties file
sub-module maven : modul-common : an another sub-module
if i update my code in modul-main, so the command
mvn spring-boot:run
see my changes at run
but IF i update my code in modul-common, so the command
mvn spring-boot:run
does not see my changes!
- how explain that ? (what the command does in background ?) want to understand !
- is there an option with this line command to solve this ?
答案1
得分: 2
这就是Maven的工作方式,与Spring Boot无关。当您在module-main
中运行命令时,它只影响该模块,Maven不知道这个模块是一个更大项目的一部分,如果需要的话应该更新该项目。
当您在特定模块中时,依赖项是通过本地Maven存储库获取的(而不是每个模块的单独target/classes
位置)。
与Gradle的工作方式相比,这是一个重要的区别(在模块中运行命令将自动更新兄弟模块,如果需要的话)。
英文:
That's how Maven works and this has nothing to do with Spring Boot. When you are in module-main
and you run a command, it only impacts that module and Maven is not aware this module is part of a larger project that should be updated if necessary.
When you are in a particular module, dependencies are picked up via the local maven repository (not the individual target/classes
locations for each module).
This is a significant difference compared to how Gradle works (running a command in a module is going to update sibling module automatically if needed).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论