我在哪里放置project-defaults.yml?

时间:2017-08-19 04:54:43

标签: java wildfly-swarm

我正在开发一个Wildfly Swarm项目(使用Wildfly Swarm版本2017.8.1,Maven 3.5.0,OpenJDK 1.8.0_141),用户经常会上传文件大于Undertow的默认值10485760字节(10MB)max-post-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表示我应该将underow设置放在project-defaults.yml文件中。这就是我的样子:

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

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

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

接下来,我尝试将project-defaults.yml放入swarm jar本身,而不是封闭的war。再一次,我无法突破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文件指定它?

1 个答案:

答案 0 :(得分:6)

对于那些搜索此问题答案的人,您有两种方法可以在项目中放置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>