Java 我应该把project-defaults.yml放在哪里?

Java 我应该把project-defaults.yml放在哪里?,java,wildfly-swarm,Java,Wildfly Swarm,我正在从事一个Wildfly Swarm项目(使用Wildfly Swarm版本2017.8.1、Maven 3.5.0、OpenJDK 1.8.0141),在该项目中,用户上传的文件通常比Undertow默认的10485760字节(10MB)最大帖子大小设置大 我从另一个角度看到,我需要更改的是swarm.undertow.servers.default server.http listeners.default.max post size键 为了尝试这种设置,我在启动jar时将其放在命令行上

我正在从事一个Wildfly Swarm项目(使用Wildfly Swarm版本2017.8.1、Maven 3.5.0、OpenJDK 1.8.0141),在该项目中,用户上传的文件通常比Undertow默认的10485760字节(10MB)最大帖子大小设置大

我从另一个角度看到,我需要更改的是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)的文件。下一步是将其设为默认值,这样我就不必每次都通过命令行传递它。他们说我应该将undertow设置放在project-defaults.yml文件中。这就是我的感觉:

swarm:
  undertow:
    servers:
      default-server:
        http-listeners:
          default:
            max-post-size: 4000000000
问题是,这些文档都没有说明文件最终应该在哪里结束。它最终应该成为战争的一部分,在WEB-INF/classes下,还是战争的根源,还是其他地方?从github上的wildfly swarm examples repo中,通常
project-defaults.yml文件位于
src/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本身,而不是封闭的war。再一次,我无法突破10485760字节(10MB)的最大post大小默认值

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

java -jar project-swarm.jar -s../src/main/root-resources/project-defaults.yml
这加载了文件,但遗憾的是,我仍然停留在默认的最大post大小10485760字节(10MB)


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

对于那些搜索此问题答案的人,您有两种方法可以将
project defaults.yml
放置在项目中

使用默认位置
src/main/resources/project defaults.yml

使用Maven资源声明 将文件放在其他地方,例如:
src/main/java/projectdefaults.yml

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

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

src/main/java
project-defaults.yml

正如您所指出的,我们的示例包含在项目的src/main/resources中。这个位置应该有用。您可以添加“-Dswarm.logging=DEBUG”以查看您的设置是否出现在启动时输出的列表中。否则,请在此处提出一个问题,并说明复制方法: