3

我有一个自定义 Wildfly 模块,用于以 Json 格式登录,我的 Swarm 应用程序在standalone.xml 中引用了该模块:

<subsystem xmlns="urn:jboss:domain:logging:3.0">

    <console-handler name="CONSOLE">
        <level name="INFO" />
        <formatter>
            <named-formatter name="json-formatter" />
        </formatter>
    </console-handler>
    ...
    <formatter name="json-formatter">
        <custom-formatter module="my.package.jsonLogFormatter" class="my.package.jsonLogFormatter.JsonFormatter"/>
    </formatter>

</subsystem>

该模块保存在 Maven 存储库中,在 Maven 构建期间它会从该存储库复制到 target/classes 文件夹。

Maven wildfly-swarm-plugin 然后将模块添加到 uberjar:

<plugin>
    <groupId>org.wildfly.swarm</groupId>
    <artifactId>wildfly-swarm-plugin</artifactId>
    <version>2017.7.0</version>
    <executions>
        <execution>
            <goals>
                <goal>package</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <additionalModules>
            <additionalModule>jsonLogFormatter-1.2</additionalModule>
        </additionalModules>
    </configuration>
</plugin>

从 uberjar 执行时,这可以按预期工作。

但是,当直接从 IDE 运行自定义 main() 类时,似乎无法告诉 Swarm 使用此模块:

public static void main(String... args) throws Exception {

    new org.wildfly.swarm.Swarm()
         //.customModule("path/to/module") // <- doesn't exist
         .start()
         .deploy();
}

Swarm 在启动期间显示此错误:

Failed to load module "my.package.jsonLogFormatter" for formatter "json-formatter"
4

0 回答 0