Java 获取干净的机器友好的Maven行/xml/json输出,可以通过STDOUT中的脚本解析?

Java 获取干净的机器友好的Maven行/xml/json输出,可以通过STDOUT中的脚本解析?,java,maven,maven-plugin,Java,Maven,Maven Plugin,例如,对maven项目运行以下命令: mvn dependency:list 我需要Maven提供的只是这两行(从下面的输出中删去): 是否有一种方法(CLI--option)仅以干净的行、xml、json等形式查看请求的信息? 相反,输出看起来更像非结构化日志。它没有已知的格式,在标准输出中将所有类型的信息混合在一起 [INFO] Scanning for projects... [INFO] -------------------------------------------------

例如,对maven项目运行以下命令:

mvn dependency:list
我需要Maven提供的只是这两行(从下面的输出中删去):

是否有一种方法(CLI
--option
)仅以干净的行、xml、json等形式查看请求的信息?

相反,输出看起来更像非结构化日志。它没有已知的格式,在标准输出中将所有类型的信息混合在一起

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] direct_library
[INFO] dependent_binary
[INFO] indirect_library
[INFO] maven_dependencies
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building direct_library 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://nexus:8081/nexus/content/repositories/snapshots/com/example/code_samples/maven_dependencies/indirect_library/0.0.1-SNAPSHOT/maven-metadata.xml
Downloaded: http://nexus:8081/nexus/content/repositories/snapshots/com/example/code_samples/maven_dependencies/indirect_library/0.0.1-SNAPSHOT/maven-metadata.xml (2 KB at 16.1
 KB/sec)
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:list (default-cli) @ direct_library ---
[INFO] 
[INFO] The following files have been resolved:
[INFO]    junit:junit:jar:4.4:test
[INFO]    com.example.code_samples.maven_dependencies:indirect_library:jar:0.0.1-SNAPSHOT:compile
[INFO] 
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building dependent_binary 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://nexus:8081/nexus/content/repositories/snapshots/com/example/code_samples/maven_dependencies/direct_library/0.0.1-SNAPSHOT/maven-metadata.xml
Downloaded: http://nexus:8081/nexus/content/repositories/snapshots/com/example/code_samples/maven_dependencies/direct_library/0.0.1-SNAPSHOT/maven-metadata.xml (2 KB at 86.2 K
B/sec)
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:list (default-cli) @ dependent_binary ---
[INFO] 
[INFO] The following files have been resolved:
[INFO]    com.example.code_samples.maven_dependencies:direct_library:jar:0.0.1-SNAPSHOT:compile
[INFO]    com.example.code_samples.maven_dependencies:indirect_library:jar:0.0.1-SNAPSHOT:compile
[INFO] 
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building indirect_library 3.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:list (default-cli) @ indirect_library ---
[INFO] 
[INFO] The following files have been resolved:
[INFO]    none
[INFO] 
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building maven_dependencies 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:list (default-cli) @ maven_dependencies ---
[INFO] 
[INFO] The following files have been resolved:
[INFO]    none
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] direct_library ..................................... SUCCESS [  0.813 s]
[INFO] dependent_binary ................................... SUCCESS [  0.026 s]
[INFO] indirect_library ................................... SUCCESS [  0.013 s]
[INFO] maven_dependencies ................................. SUCCESS [  0.002 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.065 s
[INFO] Finished at: 2015-03-24T12:10:01+08:00
[INFO] Final Memory: 18M/607M
[INFO] ------------------------------------------------------------------------
更新

或者,我会接受使用Maven API获取运行时数据的解决方案,如
集合
(而不是上面无法可靠解析的文本输出)


我看了一下,但我没有希望——我的测试表明,这只是从代码中调用Maven的一种方式。这些API不返回运行时数据(只是错误代码,所有有用的信息再次打印在日志中)。

Maven使用标准的slf4j日志记录,封装在plexus容器中

您应该能够配置slf4j绑定,以提供此处详述的不同输出格式


我不熟悉cleanlines和json日志格式;然而,slf4j可能是适应性更强的日志记录软件包之一,所以四处寻找格式化程序,您有机会找到一个。但是,如果您不知道的话,上面的最后一个链接也涵盖了如何编写自己的日志布局的页面。

我能够提供一个属性来将所需的干净输出保存到文件中

例如,或:

如果需要标准输出,
cat


尽管它不是通用的,但到目前为止,该解决方案为我解决了所有情况。

请记住,Maven支持Maven的子调用。这意味着您想要解析的任何日志记录都应该由能够理解何时一个运行嵌套在另一个运行中的解析器来完成。否则它只能在“大部分时间”工作。问题是我希望尽可能少地解析(即将输出传递到xml/json/等解析库)。即使我删除了所有的[INFO]前缀,对日志库的调用也是产生结果的Maven方式,所有其他信息仍然会混合在一起,因为对日志的相同调用用于其他所有内容。事实上,Maven不区分执行日志(默认情况下应该转到STDERR)和STDOUT上请求的干净输出(至少应该符合Maven target声明的某种格式,并且只包含预期的结果)是相当愚蠢的。在其核心,问题是Maven不是为此而设计的。更改日志输出格式不会更改日志输出的内容。如果我可以关闭除依赖项列表之外的所有功能(如示例所示),那么问题就解决了。但日志只能向上/向下升级或重新格式化。因此,我觉得你的答案很有帮助(投票赞成),但我不会接受,因为问题仍然存在(可能永远存在)。slf4j可以通过降低(或提高)日志记录级别来抑制(或增强)日志记录。格式可以整体更改,也可以部分更改。唯一的问题是,您无法在slf4j配置中实际更改日志消息。我用它来提供XML格式的输出,所以我想您也可以。事实上,这是由maven完成的日志记录并没有你想象的那么重要,slf4j并没有因为使用其库的不同产品而以不同的方式处理日志记录。如果可能有帮助,我已经找到了一个解决方法-请参阅公认的答案。请注意,帮助插件存在严重错误:
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] direct_library
[INFO] dependent_binary
[INFO] indirect_library
[INFO] maven_dependencies
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building direct_library 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://nexus:8081/nexus/content/repositories/snapshots/com/example/code_samples/maven_dependencies/indirect_library/0.0.1-SNAPSHOT/maven-metadata.xml
Downloaded: http://nexus:8081/nexus/content/repositories/snapshots/com/example/code_samples/maven_dependencies/indirect_library/0.0.1-SNAPSHOT/maven-metadata.xml (2 KB at 16.1
 KB/sec)
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:list (default-cli) @ direct_library ---
[INFO] 
[INFO] The following files have been resolved:
[INFO]    junit:junit:jar:4.4:test
[INFO]    com.example.code_samples.maven_dependencies:indirect_library:jar:0.0.1-SNAPSHOT:compile
[INFO] 
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building dependent_binary 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://nexus:8081/nexus/content/repositories/snapshots/com/example/code_samples/maven_dependencies/direct_library/0.0.1-SNAPSHOT/maven-metadata.xml
Downloaded: http://nexus:8081/nexus/content/repositories/snapshots/com/example/code_samples/maven_dependencies/direct_library/0.0.1-SNAPSHOT/maven-metadata.xml (2 KB at 86.2 K
B/sec)
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:list (default-cli) @ dependent_binary ---
[INFO] 
[INFO] The following files have been resolved:
[INFO]    com.example.code_samples.maven_dependencies:direct_library:jar:0.0.1-SNAPSHOT:compile
[INFO]    com.example.code_samples.maven_dependencies:indirect_library:jar:0.0.1-SNAPSHOT:compile
[INFO] 
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building indirect_library 3.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:list (default-cli) @ indirect_library ---
[INFO] 
[INFO] The following files have been resolved:
[INFO]    none
[INFO] 
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building maven_dependencies 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:list (default-cli) @ maven_dependencies ---
[INFO] 
[INFO] The following files have been resolved:
[INFO]    none
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] direct_library ..................................... SUCCESS [  0.813 s]
[INFO] dependent_binary ................................... SUCCESS [  0.026 s]
[INFO] indirect_library ................................... SUCCESS [  0.013 s]
[INFO] maven_dependencies ................................. SUCCESS [  0.002 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.065 s
[INFO] Finished at: 2015-03-24T12:10:01+08:00
[INFO] Final Memory: 18M/607M
[INFO] ------------------------------------------------------------------------
mvn dependency:list     -DoutputFile=dependencies.output.txt
mvn help:effective-pom  -Doutput=effective.pom.xml