获得干净的机器友好 Maven lines/xml/json 输出可由 STDOUT 中的脚本解析?
Get clean machine-friendly Maven lines/xml/json output parseable by scripts in STDOUT?
例如,运行 此命令用于 Maven 项目:
mvn dependency:list
我需要的Maven是只有这两行(从下面的输出中截取):
com.example.code_samples.maven_dependencies:direct_library:jar:0.0.1-SNAPSHOT:compile
com.example.code_samples.maven_dependencies:indirect_library:jar:0.0.1-SNAPSHOT:compile
有没有办法 (CLI --option
) 以简洁的方式仅查看此请求的信息,xml、json、...?
相反,输出看起来更像是非结构化日志。它没有已知的格式,并且在 STDOUT 中将所有类型的信息混合在一起。
[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 来获取 运行 时间数据的解决方案,例如 Collection<String>
(而不是像上面那样无法可靠解析的文本输出)。
我查看了 Maven Invoker API,但我不抱希望 - 我的测试表明它只是一种从代码调用 Maven 的方法。这些 APIs return 没有 运行 时间数据(只是错误代码,所有有用的信息再次打印在日志中)。
Maven 使用标准的 slf4j 日志记录,包装在 plexus 容器中。 https://maven.apache.org/maven-logging.html
您应该能够配置 slf4j 绑定以提供不同的输出格式,详见此处 http://logback.qos.ch/manual/layouts.html#log4jXMLLayout
我不熟悉 cleanlines 和 json 日志记录格式;但是,slf4j 可能是适应性更强的日志记录包之一,所以四处寻找 Formatter,您就有机会找到它。但是,如果您不了解,上面的最后一个 link 也涵盖了有关如何编写您自己的日志记录布局的页面。
我能够提供 属性 以将所需的干净输出保存到文件中。
例如,-DoutputFile or -Doutput:
mvn dependency:list -DoutputFile=dependencies.output.txt
mvn help:effective-pom -Doutput=effective.pom.xml
如果需要 STDOUT,cat
文件。
尽管它不是通用的,但到目前为止,变通方法为我解决了所有情况。
例如,运行 此命令用于 Maven 项目:
mvn dependency:list
我需要的Maven是只有这两行(从下面的输出中截取):
com.example.code_samples.maven_dependencies:direct_library:jar:0.0.1-SNAPSHOT:compile
com.example.code_samples.maven_dependencies:indirect_library:jar:0.0.1-SNAPSHOT:compile
有没有办法 (CLI --option
) 以简洁的方式仅查看此请求的信息,xml、json、...?
相反,输出看起来更像是非结构化日志。它没有已知的格式,并且在 STDOUT 中将所有类型的信息混合在一起。
[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 来获取 运行 时间数据的解决方案,例如 Collection<String>
(而不是像上面那样无法可靠解析的文本输出)。
我查看了 Maven Invoker API,但我不抱希望 - 我的测试表明它只是一种从代码调用 Maven 的方法。这些 APIs return 没有 运行 时间数据(只是错误代码,所有有用的信息再次打印在日志中)。
Maven 使用标准的 slf4j 日志记录,包装在 plexus 容器中。 https://maven.apache.org/maven-logging.html
您应该能够配置 slf4j 绑定以提供不同的输出格式,详见此处 http://logback.qos.ch/manual/layouts.html#log4jXMLLayout
我不熟悉 cleanlines 和 json 日志记录格式;但是,slf4j 可能是适应性更强的日志记录包之一,所以四处寻找 Formatter,您就有机会找到它。但是,如果您不了解,上面的最后一个 link 也涵盖了有关如何编写您自己的日志记录布局的页面。
我能够提供 属性 以将所需的干净输出保存到文件中。
例如,-DoutputFile or -Doutput:
mvn dependency:list -DoutputFile=dependencies.output.txt
mvn help:effective-pom -Doutput=effective.pom.xml
如果需要 STDOUT,cat
文件。
尽管它不是通用的,但到目前为止,变通方法为我解决了所有情况。