从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