我正在使用Apache cxf maven插件(v3.3.0)成功生成Java包装程序。
但是,maven构建的输出包含来自 wsdl2java 的数千条DEBUG日志记录行,但我无法删除它们。是否有额外参数或其他方法可以使过程静音,以便我仅收到成功(或可能失败)的消息?
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
<defaultOptions>
<autoNameResolution>true</autoNameResolution>
</defaultOptions>
<wsdlOptions>
<!--Some Web Service -->
<wsdlOption>
<wsdl>https://some/web/service.wsdl</wsdl>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-quiet</extraarg>
<extraarg>-p</extraarg>
<extraarg>com.foo.bar</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
答案 0 :(得分:3)
看来,在Java 9+中,该插件会强制在派生的JVM中生成代码,而不管默认文档记录为false
还是此选项的任何显式配置都是如此。插件执行未从项目中看到任何日志记录配置。 CXF正在使用java.util.logging
进行日志记录,任何级别为FINER
的日志都将打印到控制台。
我通过使用插件的additionalJvmArgs
配置选项为派生的JVM提供了日志记录配置文件的显式路径来解决此问题:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf-plugin.version}</version>
<configuration>
<additionalJvmArgs>-Dlogback.configurationFile=${project.basedir}/src/test/resources/logback-codegen.xml</additionalJvmArgs>
</configuration>
</plugin>
Logback的系统属性(如本例所示)为logback.configurationFile
。对于Log4j,它将为log4j.configurationFile
。
在日志记录配置文件中,可以添加以下记录器(Logback):
<!-- entries below silence excessive logging from cxf-codegen-plugin -->
<logger name="org.apache.cxf" level="info"/>
<logger name="org.apache.velocity" level="info"/>
通过这种方式,插件执行仍将所有警告和错误打印到控制台,但是所有重复的调试信息都消失了。缺点是您需要在每个项目中都看到这样的日志记录配置文件。但是,无论如何,您可能应该拥有一个。经常可以使用与(单元)测试相同的测试。
答案 1 :(得分:2)
很抱歉没有进入根解决方案,而是在我的依赖项帮助中添加了它:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<scope>provided</scope>
</dependency>
或在插件执行中添加以下内容也有帮助,除了速度日志
<additionalJvmArgs>
-Dorg.apache.cxf.Logger=null
</additionalJvmArgs>
希望这会给有人提供一个非常合适的解决方案的提示。