我有一个使用 Maven 构建的多模块 Web 应用程序。我们按照正常方式构建 war ,并使用 tomcat 在开发人员计算机和本地测试服务器上部署和运行。
然后我们要将应用程序部署到云端。为此,我们创建了一个特殊版本的 tomcat,其中预加载了所有库,以及一个特殊版本的 war,其中仅包含我们的代码。这里要点是tomcat是预装在云服务器上的,每次改的时候都会上传war。目前我们必须手动从构建的 war 中删除依赖项。
maven 执行此操作的最佳方法是什么?我应该构建自定义打包类型还是运行一些构建后插件来消除这些 war ?或者是其他东西?我认为激活此自定义构建的最佳方法是通过配置文件。我确实尝试通过在新配置文件中将它们设置为 scope =provided
来删除这些依赖项,但传递依赖项仍然进入了 war 。
最佳答案
如果您想排除所有依赖项,您可以使用war插件的packagingExcludes
来执行此操作:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
...
</configuration>
</plugin>
在配置文件中指定此插件仅在生产中执行。
关于java - 定制的maven可部署(删除了一些依赖项的war),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10828885/