2016-06-01 1 views
3

Вот выдержка из вывода mvn -X install:Что представляют собой строки конфигурации в многословном выпуске Maven?

[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: [email protected]] 
[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 = [email protected] 
[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) в начале их представляют?

ответ

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 = [email protected] 
[DEBUG] (f) useBuildFilters = true 
[DEBUG] (s) useDefaultDelimiters = true 

соответствует свойству maven-resources-plugin. Однако не все из них могут быть настроены непосредственно пользователем. Те, которые перечислены в the documentation, соответствуют атрибутам, которые пользователь может перегрузить.

Те, которые не могут быть настроены пользователем имеют специальный readonly набор атрибутов для true в конфигурации MOJO, что вы можете найти в Mojo API:

Указывает, что этот параметр не может быть сконфигурирован непосредственно пользователем (как в случае конфигурации, указанной в POM). Это полезно, если вы хотите заставить пользователя использовать общие элементы POM, а не конфигурации плагинов, как в случае, когда вы хотите использовать конечное имя артефакта в качестве параметра.

Эти параметры не показаны в публичной документации, вероятно, потому, что они являются внутренними параметрами, которые нельзя переопределить.

Например, если вы посмотрите на the source code для buildFilters:

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

вы можете заметить, что этот атрибут является фактически параметр плагина, но он установлен, как неизменяемые. То же самое касается project или session.

Смысл (s) и (f) более неясные для меня, вы можете увидеть их in the source code и он, очевидно, представляет ли параметр установлен Maven с использованием сеттера (s) или отражения (f).

+0

Но тогда как определяется значение параметра 'readonly'? Где в документации мы можем это узнать, если в документации отсутствуют параметры «readonly»? – Utku

+1

@Utku Вы не можете указать значение параметра 'readonly'. Цель вращает концепцию инъекции зависимостей: MOJO перечисляет зависимости, которые ему нужны, некоторые из них являются внутренними, а другие - нет. Внутренности доступны только для чтения (но все еще вводятся, например, 'project', который вводится' $ {project} ', который соответствует текущему проекту Maven), а остальные настраиваются пользователем. – Tunaki

+0

Таким образом, параметр 'readonly' не может иметь значение, отличное от' defaultValue', которое указано в MOJO. Правильно ли я понял? – Utku

Смежные вопросы