Maven的详细输出中的配置行代表什么?

时间:2016-06-01 11:49:02

标签: maven maven-plugin

以下是mvn -X install

输出的摘录
[DEBUG] Configuring mojo org.apache.maven.plugins:maven-resources-plugin:2.4.3:resources from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-resources-plugin:2.4.3, parent: sun.misc.Launcher$AppClassLoader@33909752]
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-resources-plugin:2.4.3:resources' with basic configurator -->
[DEBUG]   (f) buildFilters = []
[DEBUG]   (f) encoding = UTF-8
[DEBUG]   (f) escapeWindowsPaths = true
[DEBUG]   (s) includeEmptyDirs = false
[DEBUG]   (s) outputDirectory = C:\Users\Username\Software\glassfish4\docs\javaee-tutorial\examples\jaxws\helloservice-war\target\classes
[DEBUG]   (s) overwrite = false
[DEBUG]   (f) project = MavenProject: org.glassfish.javaeetutorial:helloservice-war:7.0.5 @ C:\Users\Username\Software\glassfish4\docs\javaee-tutorial\examples\jaxws\helloservice-war\pom.xml
[DEBUG]   (s) resources = [Resource {targetPath: null, filtering: false, FileSet {directory: C:\Users\Username\Software\glassfish4\docs\javaee-tutorial\examples\jaxws\helloservice-war\src\main\resources, PatternSet [includes: {}, excludes: {}]}}]
[DEBUG]   (f) session = org.apache.maven.execution.MavenSession@27d4a09
[DEBUG]   (f) useBuildFilters = true
[DEBUG]   (s) useDefaultDelimiters = true
[DEBUG] -- end configuration --

This是我的resources插件版本的resources目标的文档页面。

我想知道这些行(以(f)(s)开头的行)代表什么。最初我认为这些代表了提及目标的参数,但maven-resources-plugin:2.4.3:resources没有参数如:

  • buildFilters
  • 项目
  • 资源
  • 会话

简而言之:

  1. 这些线代表什么?
  2. 它们开头的(f)(s)代表什么?

1 个答案:

答案 0 :(得分:4)

此日志显示Maven如何为其执行配置插件,并将值集输出到插件执行的每个参数。

每个

[DEBUG]   (f) buildFilters = []
[DEBUG]   (f) encoding = UTF-8
[DEBUG]   (f) escapeWindowsPaths = true
[DEBUG]   (s) includeEmptyDirs = false
[DEBUG]   (s) outputDirectory = C:\Users\Username\Software\glassfish4\docs\javaee-tutorial\examples\jaxws\helloservice-war\target\classes
[DEBUG]   (s) overwrite = false
[DEBUG]   (f) project = MavenProject: org.glassfish.javaeetutorial:helloservice-war:7.0.5 @ C:\Users\Username\Software\glassfish4\docs\javaee-tutorial\examples\jaxws\helloservice-war\pom.xml
[DEBUG]   (s) resources = [Resource {targetPath: null, filtering: false, FileSet {directory: C:\Users\Username\Software\glassfish4\docs\javaee-tutorial\examples\jaxws\helloservice-war\src\main\resources, PatternSet [includes: {}, excludes: {}]}}]
[DEBUG]   (f) session = org.apache.maven.execution.MavenSession@27d4a09
[DEBUG]   (f) useBuildFilters = true
[DEBUG]   (s) useDefaultDelimiters = true

对应maven-resources-plugin的属性。但是,并非所有这些都可以由用户直接配置。 the documentation中列出的属性对应于用户可以覆盖的属性。

用户无法配置的属性在MOJO配置中将readonly属性设置为true,您可以在Mojo API中找到:

  

指定用户不能直接配置此参数(如POM指定的配置)。当您想强制用户使用常见的POM元素而不是插件配置时,这非常有用,例如您要将工件的最终名称用作参数。

这些参数未在公开文档中显示,可能是因为它们是无法覆盖的内部参数。

例如,如果您查看buildFilters的{​​{3}}:

@Parameter( defaultValue = "${project.build.filters}", readonly = true )
protected List<String> buildFilters;

你可以注意到这个属性实际上是插件的一个参数,但它被设置为readonly。 the source codeproject也是如此。

(s)(f)的含义对我来说更加模糊,您可以看到它们session,它显然表示参数是否由Maven使用setter {{1}设置}或反思(s)