我有基于Spring的网络应用程序,我试图将其捆绑到一个罐子中。
我对项目布局的想法是拥有一个包含多个子项目的根项目,其中将有一个子项目是 spring-boot 应用程序,而其他子项目可能是我自己编写的代码处理某些业务逻辑。
因此,结构可能如下所示:
/root
build.gradle <- the problem is here, how I should write root project build script
/spring-backend-subproject
/other-business-subproject
有了所有这些子项目,我想将它们全部打包到一个 JAR 中,这样我就可以做
java -jar build/libs/RootJar.jar
否则我需要运行:
./gradlew bootRun
它将在"spring-boot"子项目中运行特定的主类
我一直在网上搜索如何将所有子项目罐子捆绑到一个罐子中,例如这个:Gradle 可以将多个项目罐子捆绑到一个罐子中吗? 但我经常最终遇到错误,例如找不到主类(如果我专门在"spring子项目"文件夹中运行jar,则不会发生这种情况(或找不到SpringApplication类(如果在子项目文件夹中运行jar,则不会再次发生(
我该如何解决这个问题?
谢谢!
我广泛使用这种模式。与其尝试将部署类放入根目录,不如添加一个模块(我通常称之为-launcher
(,该模块将其他模块列为依赖项,并包含主类和相关的应用程序代码,例如您可能拥有的任何application.properties
。
此模块将生成一个工件my-project-launcher.jar
,并将其部署到您正在使用的任何平台。