【问题标题】:How can I use externalized configuration files with the Gradle Tomcat plugin?如何通过 Gradle Tomcat 插件使用外部化配置文件?
【发布时间】:2013-02-14 08:29:15
【问题描述】:

问题。我有各种特定于环境的配置文件,我想在运行时将它们包含在类路径中,但我不希望这些成为 WAR 本身的一部分。例如,我有一个用于开发环境的 log4j.xml 文件,其中打开了调试,还有一个属性文件,其中包含许多特定于环境的凭据、端点等。

我希望这些在 WAR 之外,因为我想发布我测试的同一个 WAR,而不是构建单独的特定于环境的 WAR。我可能会在 WAR 中包含多个特定于环境的配置集(类似于 Maven 和 Spring 提供的配置文件功能),但我不希望这样做。

独立 Tomcat 具有 shared.loader 功能(在 catalina.properties 中),而 Jetty 具有 extraClasspath,但我不知道如何使用 Gradle Tomcat 插件来做到这一点。有什么办法吗?

相关帖子。以下帖子是相关的,但它们似乎涉及将配置文件复制到最终被拉入 WAR 文件的位置。

【问题讨论】:

    标签: tomcat configuration classpath gradle gradle-tomcat-plugin


    【解决方案1】:

    您可以尝试为此使用属性additionalRuntimeJars。名称有点偏,但目的是为 Tomcat 的类加载器添加外部 JAR。

    [tomcatRun, tomcatRunWar]*.additionalRuntimeJars << file("/path/to/config/files")
    

    [tomcatRun, tomcatRunWar]*.additionalRuntimeJars = [file("/path/to/config/files")]
    

    我不确定它是否会起作用,但值得一试。如果这不起作用,如果您可以在 GitHub 上为它打开一个问题,那就太好了。

    【讨论】:

    • 本杰明听起来不错。我会看看那个。如果这可行,我的想法是这种方法优于我发布的答案,因为它限制了 Tomcat 插件的额外类路径的范围。请注意,我正在添加配置文件目录而不是添加 JAR,所以我们会看到。
    • 我查看了 AbstractTomcatRunTask。属性名称 (additionalRuntimeJars) 是正确的,但使用任何建议的公式都不能正常工作。我会创建问题。再次感谢。
    • 使用 2.2.1 版的插件,该属性已重命名为 additionalRuntimeResources。它适用于我。
    【解决方案2】:

    想出了一个办法:

    buildscript {
        repositories { mavenCentral() }
        dependencies {
            classpath "org.gradle.api.plugins:gradle-tomcat-plugin:0.9.7"
            classpath files("/path/to/config/files")
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-03
      • 2022-07-23
      • 2020-06-02
      • 1970-01-01
      • 2017-11-24
      • 2012-07-13
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多