假设你有几个应用程序共享相同的代码和大多数其他资源,但有一些不同的外观和感觉,一些标签更改等等(想想品牌).如果每个Web应用程序都要使用自己的WAR文件,那么您将在何处放置共享资源?
我已经使用类路径来共享类和属性文件.但是javascript和css文件怎么样?是创建和部署一个额外WAR文件的最佳方法,该文件将为这些共享文件提供其他应用程序所需的文件吗?
我还想到了一个构建脚本,它做了一些魔术,并从一个共同的源码喷出(略微)不同的WAR,但我不喜欢它,因为它只是在你需要构建/测试/运行单个应用程序时不必要的复杂化.
任何其他提示和技巧将不胜感激.
您可以在同一个EAR中部署两个WAR,并将公共资源放在EAR中.然后将适当的依赖项放在Web应用程序的清单中,以链接到耳中的jar文件.
我看到用于此类产品线配置的策略是在使用maven构建时使用WAR 覆盖.您定义了一个包含公共内容的公共WAR,并将其与包含特定内容的其他WAR重叠,以便为每个应用程序生成不同的WAR.如果在不同的计算机上部署WAR变体,则此方法可能最有用.但我不确定我是否真的可以推荐这个.
如果您实际覆盖了东西,请记住指定覆盖配置,否则覆盖顺序不是确定性的.它甚至可能随着maven-war-plugin升级而改变.(在我们的案例中确实如此.)