代码之家  ›  专栏  ›  技术社区  ›  Redsaz

我应该把项目默认设置放在哪里。yml?

  •  3
  • Redsaz  · 技术社区  · 8 年前

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

    questions 我需要改变的是关键 swarm.undertow.servers.default-server.http-listeners.default.max-post-size .

    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 说我应该在一个项目中设置背景。yml文件。这就是我的感受:

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

    问题是,这些文档都没有说明文件最终应该在哪里结束。它最终应该成为战争的一部分,在WEB-INF/classes下,还是战争的根源,还是其他地方?从github上的wildfly swarm示例回购中,通常是 project-defaults.yml file is in src/main/resources“,这是我最初使用它的地方。然而,这对我来说并不奏效。任何上载大于10485760字节(10MB)的文件的尝试都会失败。

    src/main/resources 被放入战争档案 /WEB-INF/classes (war文件本身由swarm jar包装)。因此,我更新了maven pom,使项目默认。yml将存储在war文件本身的基本目录中。这仍然不起作用。

    接下来,我尝试设置项目默认值。yml在swarm jar本身,而不是封闭的战争。再一次,我无法突破10485760字节(10MB)的最大post大小默认值。

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

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

    在这一点上,我被难住了。我的项目默认设置。yml文件可能是错误的,或者我没有把它放在正确的位置。我该如何解决这个问题,以便上传大于10485760字节(10MB)的文件,并通过项目默认值指定它。yml文件?

    1 回复  |  直到 8 年前
        1
  •  7
  •   KG6ZVP    8 年前

    对于那些寻找这个问题答案的人,你有两种选择 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>