【问题标题】:Where exactly do I put project-defaults.yml?我到底应该把 project-defaults.yml 放在哪里?
【发布时间】:2018-01-27 19:10:18
【问题描述】:

我正在开发一个 Wildfly Swarm 项目(使用 Wildfly Swarm 版本 2017.8.1、Maven 3.5.0、OpenJDK 1.8.0_141),用户通常会上传比 Undertow 的默认最大 10485760 字节 (10MB) 大的文件-size 设置。

我从其他questions 看到,我需要更改的是密钥swarm.undertow.servers.default-server.http-listeners.default.max-post-size

为了尝试这个设置,我在启动 jar 时将它放在命令行中:

java -jar project-swarm.jar -Dswarm.undertow.servers.default-server.http-listeners.default.max-post-size=4000000000

这行得通。如果我想使用 Wildfly Swarm maven 插件运行它,以下方法也有效:

mvn wildfly-swarm:run -Dswarm.undertow.servers.default-server.http-listeners.default.max-post-size=4000000000

使用上述两个命令中的任何一个,我都可以上传大于 10485760 字节 (10MB) 的文件。下一步是将此设置为默认值,这样我就不必每次都通过命令行传递它。 official Wildfly Swarm configuration documentation 说我应该将 undertow 设置放在 project-defaults.yml 文件中。这就是我的样子:

swarm:
  undertow:
    servers:
      default-server:
        http-listeners:
          default:
            max-post-size: 4000000000

问题是,这些文档都没有说明文件最终应该在哪里结束。它应该最终成为战争的一部分,在 WEB-INF/classes 下,还是战争的根源,还是其他地方?来自 github 上的 wildfly-swarm 示例存储库,通常是 project-defaults.yml file is insrc/main/resources`,这是我最初拥有它的地方。但是,它对我不起作用。任何上传大于 10485760 字节 (10MB) 的文件的尝试都会失败。

我发现 maven 项目中放入src/main/resources 的任何内容都会放入war 文件的/WEB-INF/classes 中(并且war 文件本身被swarm jar 包装)。因此,我更新了我的 maven pom,以便将 project-defaults.yml 存储在 war 文件本身的基本目录中。这仍然不起作用。

接下来,我尝试将 project-defaults.yml 放入 swarm jar 本身,而不是封闭的战争。再一次,我无法突破 10485760 字节 (10MB) 的 max-post-size 默认值。

最后,我尝试使用命令行选项来引用外部 yml 文件,如下所示:

java -jar project-swarm.jar -s../src/main/root-resources/project-defaults.yml

这加载了文件,但是我仍然卡在默认的最大帖子大小 10485760 字节 (10MB)。

在这一点上,我很难过。我的 project-defaults.yml 文件可能是错误的,或者我没有将它放在正确的位置。如何解决此问题,以便上传大于 10485760 字节 (10MB) 的文件并通过 project-defaults.yml 文件指定?

【问题讨论】:

  • 正如您所指出的,我们的示例将其显示在项目的 src/main/resources 中。该位置应该可以工作。您可以添加“-Dswarm.logging=DEBUG”以查看您的设置是否出现在启动时输出的列表中。否则,请在此处提出重现问题的方法:issues.jboss.org/browse/SWARM

标签: java wildfly-swarm


【解决方案1】:

对于那些寻找这个问题的答案的人,您有两种选择可以将project-defaults.yml 放入您的项目中。

使用默认位置

src/main/resources/project-defaults.yml

使用 Maven 资源声明

将文件放在其他位置,例如:src/main/java/project-defaults.yml

然后,在构建部分中使用 maven 将其声明为资源,如下所示:

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>project-defaults.yml</include>
            </includes>
        </resource>
    </resources>
</build>

【讨论】:

    猜你喜欢
    • 2020-09-30
    • 2016-08-25
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 2017-11-30
    • 2016-12-21
    相关资源
    最近更新 更多