java Maven在构建时包含不同的文件
我有十个WAR文件,所有这些文件都有几乎相同的代码和标记。唯一的区别在于图像、CSS和消息。我偶然想到了配置文件的概念,但我还没有完全摸索过,我不确定这是否能满足我的需要
基本上,我想要一个基础项目,为10场不同的战争提供不同的配置文件。每当使用给定的概要文件启动构建时,它都会进入存储库(本地或我所在组织的),检索CSS、图像和消息文件,并在完成该过程之前将其放置在正确的位置。我想象不出这与出去检索JAR文件并将其放入WEB-INF库有多大不同
我相信这在左外野不会太远,我想尽可能地坚持马文的最佳状态。任何帮助都将不胜感激
# 1 楼答案
你可以随时使用maven远程资源插件。您可以为每个资源集创建子模块构建,比如创建一个名为“my-project-resources-customer1”的构建。罐子这些就像任何其他maven工件一样,可以放在本地或远程回购中
在您的war构建中,您将拥有如下所示的插件配置,它将把指定资源包JAR的内容分解到您的目标目录中,然后将它们包含在war文件中。此配置可以由配置文件轻松控制,这些配置文件设置属性“profilename”以选择所需的资源
一个警告(很小)是,如果使用maven发布插件,请注意如何指定资源版本。如果您的资源和war文件共享一个公共版本,则需要使用插件中的${pom.version}属性。然后,当发布插件将您的父版本更新为1.1时,插件将自动反映这一点,并使用资源包的1.1版本。如果您没有与war同步发布资源包,那么明确指定版本就可以了
嗯
ste
# 2 楼答案
我可以根据Adding and Filtering External Web Resources中描述的配置文件、maven war插件和过滤,想出解决方案
但这并不能回答你问题中如何将web资源作为“依赖项”使用的问题
为此,How to share resources across projects in Maven博客文章描述了一些非常接近的东西,可能会有所帮助
# 3 楼答案
是的,我两次回答这个问题,因为每种方法都有很大的不同
而不是一个pom。如果每个war文件都有一个配置文件,那么您可以拥有一个包含11个模块的项目。一个maven模块拥有所有共享源代码,然后您的每个war文件都将是另一个相邻的模块,只有特定于它的文件。所有这些模块都在一个根pom下
在每个war模块的pom中,您将在构建配置中设置要指向的resources和sourceDirectory/基本项目/src/main/resources和/分别是base project/src/main/java
maven war插件配置将有webResources设置指向/将base project/src/main/webapp和特定于战争的资源添加到中/src/main/webapp
有了这个解决方案,您的每个war文件都会有不同的maven工件,它们都可以在您的war文件中共存。m2存储库没有任何问题
# 4 楼答案
如果你想把每个项目分开,你可以给每个项目自己的pom。xml。在每个子项目pom中,为父项目添加依赖项。这将导致生成执行“覆盖”,其中来自子项目的文件被添加到(或覆盖)父项目中的文件。子项目的依赖关系示例: