Свойство Mystery Maven '$ {...}' в сборке - PullRequest
0 голосов
/ 21 декабря 2018

РЕДАКТИРОВАНИЕ

Я обнаружил странный параметр при использовании функции <filtered>true</filtered> модуля maven-assembly-plugin.

In:

some unfiltered text
foo expands to '${params.foo}'
bar expands to '${params.bar}'
"..." expands to '${...}'

Out:

some unfiltered text
foo expands to 'FOO'
bar expands to 'BAR'
"..." expands to 'MavenProject: net.jsharp:assembly-example:1 @ /path/to/my/code/pom.xml'

params.foo и params.bar определены в моем pom.xml.... нет.Я не могу найти ни один файл settings.xml, который бы его определял, так что, похоже, он исходит либо из супер-помпы, либо из-за какой-то особенности того, как работает фильтрация параметров, но я не могу понять, что это такое.Нет входа mvn help:effective-pom

Что это за загадочная ${...} переменная?

Воспроизводимый пример здесь: https://gist.github.com/jpassaro/0892106beca2a066fae21320be41dcbf

ОРИГИНАЛЬНЫЙ ВОПРОС (иcontext)

В некоторых сценариях оболочки мне приходится интерполировать свойства maven.Я делаю это следующим образом:

# '${...}' vars should be understood as being populated by maven
foo='${project.foo}'
bar='${project.bar}'

К моему большому удивлению, когда он запускается через ассемблер, появляется следующее:

# 'MavenProject: <group-id>:<artifact-id>:<version> @ <path-to-project>/dependency-reduced-pom.xml' vars should be understood as being populated by maven
foo='FOO'
bar='BAR'

Что это за загадочная ${...} переменная?

(maven 3.5.4, OSX, java 1.8)

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Значение свойства ${...} разрешается в MavenProject.toString () .То же самое происходит с ${..} и ${....}, но не с ${.}.

Разрешение этого свойства происходит внутри ReflectionValueExtractor .Этот класс фактически отвечает за разрешение значений путем преобразования свойств, таких как ${project.build.outputDirectory}, в цепочки методов, такие как project.getBuild().getOutputDirectory().Кажется, что класс не может обрабатывать свойства с чем-либо между двумя точками и возвращает project.

Свойство ${...} и его разрешение, по-видимому, недокументированное поведение , поскольку оно задокументированони в POM Reference , ни в Complete Reference .

0 голосов
/ 21 декабря 2018

Эти переменные или свойства действительно исходят от maven.Они определены либо в файле pom.xml, либо в используемом вами активном профиле (см. Ваш файл settings.xml, скорее всего, в домашней папке вашего пользователя)

...