是否有一种方法可以在不更改pom.xml
或应用程序源代码的情况下,将单个 Boot 项目打包到JAR和WAR中?
我读过Converting a Spring Boot JAR Application to a WAR,但是它将项目转换为WAR,并且失去了打包为JAR的能力。
我并不期望mvn package
同时做这两件事。我想要的是类似mvn i-want-a-jar
的东西,它会把项目打包成JAR。或者我可以运行mvn i-want-a-war
,它会把项目打包成WAR。
这可能吗?
3条答案
按热度按时间1l5u6lss1#
我通过添加
然后为JAR和WAR设置不同的配置文件:
现在
mvn package -P war
生成一个WAR,mvn package -P jar
生成一个JAR。另一个选择是为JAR和WAR创建单独的模块,但我没有走这条路。
ljsrvy3e2#
一个可执行的WAR文件有什么问题?这难道不是您真正需要的吗?
附言:
java -jar name.war
23c0lvtd3#
我们最近有一个类似的需求,其中一个基于Sping Boot 的现有项目最初被打包为一个可执行Jar,需要支持Tomcat和WildFly部署。
由于此项目中使用了一些依赖项(例如WebJars),因此不能简单地切换到WAR包,因为其中一些依赖项是WildFly(VFS支持)所需的,而不是其他部署所需的。
解决方案是重新构建项目模块,使 core 模块包含实际项目,但不应用Sping Boot 的插件,同时几个 package 模块将依赖于 core 模块并配置部署工件细节(Boot和其他插件、部署特定依赖项等)。
通过这种方式,项目构建能够在一次构建运行中生成多个部署工件( Boot 的可执行JAR、传统WAR和WildFly特定的WAR)。
如果有人觉得这很有用,那么演示该方法的示例项目是available on Github。该项目可以由Gradle或Maven构建。