最近在使用idea弄spring boot的项目,准备分多个module,然后引用。
目前创建了一个project-main主工程,和多个子工程,比如project-a,project-b这样子,然后分属于不同项目,各自是单独的SVN地址。
然后project-a,project-b我会自己配置maven。可以编译、install jar到本地仓库;可以deploy jar到远程仓库。在project-main中通过pom引用(引用方式和引用其他的maven依赖方式相同),运行时会依赖,仓库中project-a.jar和project-b.jar。如果本地没有就去远程仓库下载。(理解和描述没错吧)
-这是分割线-
问题:
我本地做开发,不想每次修改了project-a都去install然后run project-main,也不能直接run project-a去验证代码(因为有些是纯bean之类的)。
我想每次run project-main时,都可以自动依赖project-a和project-b的target里的class文件。(不知道我表述清楚没有,就是我project-a修改了一个UserService类,他会知道编译class到project-a项目下的target里,但是此时没有install,所以project-a.jar里的这个class并没有更新)。
需求应该描述清楚了吧。
-这是分割线-
解决过程:
idea里,project structure里,module里,add import module,选择磁盘目录里的project-a,无论选择【create module from abc】还是【import module from abc】,都会导致引入的module,和之前的project-main是同级,而且在project-main里无法引用class。【project structure里import之后,project-main右侧的export可以add module dependency到import的project-a和project-b,不过貌似还是不生效】
尝试过,把project-a的代码复制到project-main的磁盘目录下,这个试时候是可行的,但是因为SVN的关系,不能这么干。
或者说,我应该创建一个工程project-max,然后引入project-main,project-a,project-b,然后直接跑project-main吗?
我应该创建一个工程project-max,然后引入project-main,project-a,project-b,然后直接跑project-main
应该这么做
解决方案:
您可以使用Maven的“多模块”功能来解决这个问题。在这种情况下,您可以使用Maven来构建和管理所有子项目和主项目,而不需要手动安装每个子项目。
具体来说,您可以在主项目的pom.xml文件中添加子模块的依赖关系。这将允许Maven将子模块和主模块一起构建和打包。然后,您可以使用Maven来运行主模块,它将自动包含和运行所有子模块。
这样做的好处是,您可以更轻松地管理所有子模块和主模块的依赖关系,并且可以更快地进行开发和测试。同时,您可以使用Maven来自动构建和部署所有子模块和主模块,而不需要手动进行这些操作。
如果您不熟悉Maven的多模块功能,请参阅Maven官方文档中的相关部分。