从war文件中排除所有不必要的jar

Posted

技术标签:

【中文标题】从war文件中排除所有不必要的jar【英文标题】:Excude all the unnecessary jar from war file 【发布时间】:2014-09-09 21:35:45 【问题描述】:

我是一名 grails 程序员,我想删除包含在 war 文件中的不必要的 jar 文件。战争文件中包含了许多不必要的 jar 文件。有什么快速的解决方案吗?您还可以提及制作和运行简单的 grails 战争所必需的 jar 文件吗?

【问题讨论】:

你能举一个“不必要的jar文件”的例子吗?在不知道您的意思的情况下,很难回答您的问题。我的意思是,您可以使用 grails prod war -nojars 排除所有 jar 文件并创建一个“skinny war”文件,但不包括任何 jar 文件。 我的项目中没有任何数据库,所以我删除了我的数据源文件。现在我想删除 h2 和休眠 jar。但是当我删除它们时,它会引发错误。所以我只想包含运行我的项目所需的最小 jar 文件。您是否有运行我的项目所需的 jar 文件列表。谢谢 【参考方案1】:

您可以通过在 BuildConfig.groovy 中添加以下行来排除不必要的 jar。

grails.war.resources =  stagingDir ->
  delete(file:"$stagingDir/WEB-INF/lib/jarFileName.jar")

示例:移除休眠核心

grails.war.resources =  stagingDir ->
  delete(file:"$stagingDir/WEB-INF/lib/hibernate-core-3.3.1.GA.jar")

【讨论】:

嗨 Ramsharan,我试过这个,但是当我删除 h2 和休眠 jar 时,它会在部署时引发错误。您是否有任何部署所需的 jar 文件列表。谢谢 您能提供错误堆栈跟踪吗?您如何使用命令 run-app 或 run-war 或在单独的 tomcat 中部署应用程序?我从未列出部署所需的最小 jar 文件 我已经部署在tomcat中,使用命令run-war。在运行应用程序中一切都很好。堆栈跟踪是:2014-07-22 21:55:17,454 [localhost-startStop-1] 错误 context.ContextLoader - 上下文初始化失败 org.springframework.beans.factory.BeanCreationException:在 ServletContext 中创建名称为“pluginManager”的 bean 时出错资源[/WEB-INF/applicationContext.xml]:init方法调用失败;嵌套异常是 java.lang.NoClassDefFoundError: javax/persistence/Entity at java.util.concurrent.FutureTask.run(FutureTask.java:262) 这个工程有效。我能够使用这种方法从战争中删除不需要的罐子。

以上是关于从war文件中排除所有不必要的jar的主要内容,如果未能解决你的问题,请参考以下文章

玩! war 命令 - 是不是可以从应用程序 /lib 文件夹中排除某些 jar

如何从war maven程序集中排除包含文件的文件夹

这是将 .properties 文件排除在 WAR 文件之外的最佳方法吗?

Maven -- 在进行war打包时排除不需要的文件

Maven -- 在进行war打包时排除不需要的文件

servlet容器加载war过程