我正在使用 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>
Run Code Online (Sandbox Code Playgroud)
似乎在 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>
Run Code Online (Sandbox Code Playgroud)
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"/>
Run Code Online (Sandbox Code Playgroud)
这样插件执行仍然会向控制台打印所有警告和错误,但所有重复的调试信息都会消失。缺点是您需要在每个项目中都有这样一个可见的日志配置文件。但是,无论如何,您可能应该拥有一个。通常可以使用与(单元)测试相同的测试。
小智 5
抱歉,没有进入根解决方案,但将其添加到我的依赖项帮助中:
<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>
Run Code Online (Sandbox Code Playgroud)
或者在插件执行中添加以下内容也有帮助,除了速度日志之外
<additionalJvmArgs>
-Dorg.apache.cxf.Logger=null
</additionalJvmArgs>
Run Code Online (Sandbox Code Playgroud)
希望这能为有人提出一个更合适的解决方案提供提示。
| 归档时间: |
|
| 查看次数: |
675 次 |
| 最近记录: |