Maven详细输出处的配置行代表什么?
下面是mvn-X安装的输出的摘录:Maven详细输出处的配置行代表什么?,maven,maven-plugin,Maven,Maven Plugin,下面是mvn-X安装的输出的摘录: [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 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 --
是我的resources
插件版本的resources
目标的文档页面
我想知道这些行(以(f)
或(s)
开头的行)代表什么。起初,我认为这些代表上述目标的参数,但没有如下参数:
- 构建过滤器
- 计划
- 资源
- 会议
(f)
或(s)
代表什么此日志显示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资源插件的属性。但是,并不是所有这些都可以由用户直接配置。中列出的属性对应于用户可以覆盖的属性
在MOJO配置中,用户无法配置的属性设置为true
,您可以在以下位置找到:
指定用户不能直接配置此参数(如POM指定的配置)。当您想要强制用户使用公共POM元素而不是插件配置时,这非常有用,例如您想要使用工件的最终名称作为参数
这些参数没有显示在公共文档中,可能是因为它们是无法重写的内部参数
例如,如果查看buildFilters
:
@参数(defaultValue=“${project.build.filters}”,readonly=true)
受保护的列表过滤器;
您可以注意到,这个属性实际上是插件的一个参数,但它被设置为只读。这同样适用于或
(s)
和(f)
的含义对我来说更加模糊,你可以看到它们,它显然表示参数是由Maven使用setter(s)
还是反射(f)
设置的,但是只读
参数的值是如何确定的?如果文档中省略了readonly
参数,我们在文档中的什么地方可以了解到这一点?@Utku您不能指定readonly
参数的值。其目的是围绕依赖项注入的概念:MOJO列出了它所需要的依赖项,其中一些是内部的,而另一些不是。内部构件是只读的(但仍然是注入的,比如由与当前Maven项目相对应的${project}
注入的project
),其他的由用户配置。因此readonly
参数的值不能与MOJO中指定的defaultValue
不同。我理解对了吗?