首页 文章

使用Maven打包JAR和WAR的Spring Boot Migration问题

提问于
浏览
2

我们正在尝试将现有的Spring MVC应用程序迁移到Spring Boot应用程序 . 我们现有的应用程序使用的是3.2.9,因此需要大量的XML配置 . 所有bean都在XML文件中定义 . 我们所做的是首先我们已将现有应用程序升级到Spring 4.2.5版本,因为Spring Boot仅适用于Spring 4版本 .

我们的要求是从构建中获取FAT JAR和WAR文件 . 我们大多数现有客户更喜欢Application Server部署,因此我们必须为他们创建WAR文件 . 此外,对于我们的内部测试和新部署,我们计划使用FAT JAR .

我们如何在Maven文件中实现它们,我们能够单独提供如下 . 是否有任何maven插件在单个版本中生成?

<packaging>jar</packaging>

要么

<packaging>war</packaging>

我们将工件发布到Nexus存储库中 . 因此,我们希望为JAR文件和WAR文件提供单独的存储库位置 . 我们可以使用单个 pom.xml 文件吗?

另外一个问题,我们在 WEB-INF 文件夹下有所有XML配置 . 当我们转移到Spring Boot应用程序时,它必须位于 resources 文件夹下 . 我们怎样才能轻松处理它们 . 当我们构建FAT jar时,资源不会被查看 WEB-INF 因为它只是忽略了 webapp 项目 .

我期待着完成迁移的一些指导 . 事实上,我们已经完成了这些改变并且工作正常,但我们对这一代WAR / JAR感到困惑 .

Update: 我还有另外一个问题,如果我们将现有的应用程序转换为 spring 启动,我们是否还必须在web-app中维护WEB-INF文件夹,或者可以将所有内容移动到资源文件夹?在构建WAR文件时,spring boot是否负责将资源移动到WEB-INF?如果要将所有资源放在 resources 文件夹下,spring boot将如何设置创建WAR文件 .

2 回答

  • 2

    Maven没有优雅地处理这个问题,但它远非难以解决 . 您可以使用3个pom文件执行此操作 . 一个父pom包含大部分配置,一个包含工作的包装部分 . 这也可以巧妙地将两种不同装配模式的问题分开 .

    为了澄清 - 我不建议在这里使用多模块配置,只需要多个名称为war-pom.xml和fat-jar-pom.xml的pom,以及parent-pom.xml .

  • 2

    使用Gradle构建WAR和FAT JAR非常容易 .

    使用Maven,我会尝试multi module setup,其中一个子模块将构建胖JAR,第二个将构建WAR文件 .

    应用程序逻辑可以作为第三个子模块,因此是具有Spring配置和bean的独立JAR . 此应用程序逻辑JAR将作为胖JAR和WAR模块的依赖项 . WAR特定配置可以放在Maven WAR子模块中 .

    我没有知道可能会发生什么样的挑战 . 我肯定不会尝试将 maven-assembly-plugin 或其他包装插件与 spring-boot-maven-plugin 集成 .

    关于配置文件的位置,只需将它们放入 src/main/resources 或尝试抵制默认值 .

相关问题