【问题标题】:Is there a way to point jar libraries in a different location from a war in tomcat 8 to reduce war size?有没有办法将 jar 库指向与 tomcat 8 中的战争不同的位置以减少战争规模?
【发布时间】:2017-09-01 09:53:19
【问题描述】:

我在 Grails/Gradle 中创建了我的 Web 服务,其中包含许多依赖项 jar,使得部署在 tomcat8 中的战争规模变得沉重。有什么方法可以让我的战争使用来自不同位置的依赖项,这样我的战争就不会受到这些批量依赖库的影响。

【问题讨论】:

  • 磁盘很便宜。为什么要这样做?使用 JAR 进行 WAR 并没有什么坏处。你不应该这样做。
  • @duffymo 磁盘很便宜,公司也很便宜。
  • @sgin - 可能不是。您可以购买的任何运行的磨机 PC 都将有足够的磁盘,不需要这种做法。

标签: java tomcat grails gradle


【解决方案1】:

例如,如果您使用 maven,您可以做一些事情。在您不想包含在 WAR 文件中的所有依赖项中添加标签。

    <dependency>
        <groupId>org.python</groupId>
        <artifactId>jython-standalone</artifactId>
        <version>2.7.0</version>
        <scope>provided</scope>
    </dependency>

那么当maven构建你的WAR文件时,会生成一个lib-provided的文件夹,你可以去掉这个文件夹,减少你的war文件大小。

您不想包含在 WAR 中的所有依赖项,您应该将它们放入您的 TOMCAT_HOME/lib 中,Tomcat 将检查您项目的库以及位于此文件夹中的 jar。

重要提示:我永远不会这样做,因为您的 WAR 依赖于某些特定的应用程序服务器,如果您尝试将 WAR 部署在另一个服务器上,如果您更新您的maven 依赖项,您必须在应用程序服务器中手动更新它们。

所以我非常愿意选择另一个选项而不是这个,我会让你的 WAR 独立于任何应用程序服务器。

【讨论】:

    【解决方案2】:

    将您的项目签入 Git(当然没有 jars)并在您的服务器上创建一个脚本来签出、构建它(使用 Maven 或 Gradle)并将其部署到 Tomcat。

    看看像 Bamboo 或 Jenkins 这样的持续集成系统,可以自动执行此操作。

    【讨论】:

    • 这如何减少战争规模?
    猜你喜欢
    • 1970-01-01
    • 2012-11-21
    • 2012-04-14
    • 2018-03-22
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    相关资源
    最近更新 更多