【问题标题】:creating slim grails war file using common jars in tomcat?使用tomcat中的常见jar创建苗条的grails战争文件?
【发布时间】:2020-08-30 14:20:28
【问题描述】:

生成的带有所有默认 jar 的 grails war 文件大约为 30 mb。我需要减小这个大小,以便频繁测试部署到远程 tomcat 容器。所以我正在尝试使用常见的 libs tomcat 技术。该过程由于某种原因无法正常工作。

这是我正在采取的步骤

1) 首先我将所有jar文件从web-inf/lib目录复制到服务器的公共目录,如下所示

这里是 /var/lib/tomcat7/conf/catalina.properties common.loader 配置。

2)然后我配置grails配置如下

3) 然后我使用 > grails war --nojars

创建战争

生成的战争文件为 6.42 mb。

4)然后我将war文件复制到tomcat webapps目录。

5) 当我访问 webapp 时,我得到“页面找不到 404 错误”。

感谢任何关于我做错了什么的帮助。谢谢!

更新:

这是 catalina.out 中记录的错误。该应用程序是 nojars。

【问题讨论】:

  • 如果没有更多信息,除了知道您收到 404 之外,很难说出丢失了什么。如果您查看服务器日志,您可能会发现 ClassNotFoundExceptionNoClassDefFoundError 被记录并如果是这样,这些消息将指示找不到哪个类。
  • @JeffScottBrown 谢谢!我已经用 catalina.out 中记录的错误截图更新了上面的帖子。它说错误侦听器启动。你知道那是什么意思吗?谢谢!
  • @JeffScottBrown 我认为我只使用速度更快的詹金斯。谢谢!

标签: tomcat grails grails-2.2


【解决方案1】:

最好的办法是限制依赖;这只能通过您的 build.gradle 文件 AFAIK 来完成。只留下你需要的东西。

如果您知道插件是由另一个依赖项提供的,请使用 'provided'

provided 'org.grails.plugins:cache:4.0.0'
compile "org.grails.plugins:async"
provided "org.grails:grails-logging"
provided "org.grails:grails-plugin-i18n"

另外,剪掉双包含(如 groovy-all)和其他你不需要的部分:

provided 'org.codehaus.gpars:gpars:1.2.1', {
    exclude group:'org.multiverse', module:'multiverse-core'
    exclude group:'org.codehaus.groovy', module: 'groovy-all'
}

在 gradle.build 中明确声明您需要的部分,并排除您不需要的部分。您必须对构建更加聪明。

【讨论】:

  • “在你的 gradle.build 中特别声明你需要的部分”——我认为它是一个 Grails 2.2 应用程序。可以使用 Gradle 构建 Grails 2.2 应用程序,但默认情况下我们没有提供这种支持,并且问题并不表明他们正在使用 Gradle。
  • "生成的带有所有默认 jar 的 grails war 文件大约是 30 mb。我需要减小这个大小"... Gradle 就是这样做的方式。 Jeff 你有更好的方法吗?
猜你喜欢
  • 1970-01-01
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多