当您使用 -X 标志运行 Maven 2 并观察它配置插件时,您可能会看到如下输出:
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-clean-plugin:2.3:clean' -->
[DEBUG] (f) directory = e:\projects\foobar\target
[DEBUG] (f) excludeDefaultDirectories = false
[DEBUG] (f) failOnError = true
[DEBUG] (s) directory = .
[DEBUG] (s) includes = [**/*~]
[DEBUG] (f) filesets = [file set: . (included: [**/*~], excluded: [])]
[DEBUG] (f) followSymLinks = false
[DEBUG] (f) outputDirectory = e:\projects\foobar\target\classes
[DEBUG] (f) project = MavenProject: foobar:foobar:1.0-SNAPSHOT @ e:\projects\foobar\pom.xml
[DEBUG] (f) reportDirectory = e:\projects\foobar\target\site
[DEBUG] (f) skip = false
[DEBUG] (f) testOutputDirectory = e:\projects\foobar\target\test-classes
[DEBUG] -- end configuration --
(f) 和 (s) 有什么区别?
有趣的问题。我从来没有关注过这个小细节,也找不到任何关于它的文档。所以我查找了来源,这就是我们可以看到的o.a.m.p.DebugConfigurationListener http://maven.apache.org/ref/2.2.1/xref/org/apache/maven/plugin/DebugConfigurationListener.html(来自 Maven 核心):
public void notifyFieldChangeUsingSetter( String fieldName, Object value, Object target )
{
if ( logger.isDebugEnabled() )
{
logger.debug( " (s) " + fieldName + " = " + toString( value ) );
}
}
public void notifyFieldChangeUsingReflection( String fieldName, Object value, Object target )
{
if ( logger.isDebugEnabled() )
{
logger.debug( " (f) " + fieldName + " = " + toString( value ) );
}
}
(f) 和 (s) 之间的区别现在应该是不言自明的(叹气)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)