组装中的神秘专家 属性 '${...}'
Mystery maven property '${...}' in assembly
已编辑
我在使用 maven-assembly-plugin 的 <filtered>true</filtered>
功能时遇到了一个奇怪的参数。
在:
some unfiltered text
foo expands to '${params.foo}'
bar expands to '${params.bar}'
"..." expands to '${...}'
输出:
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,所以它似乎来自 super pom 或过滤参数扩展工作方式的一些特殊性,但我无法弄清楚它是什么。未登录 mvn help:effective-pom
这个神秘的${...}
变量是什么?
此处可重现示例:https://gist.github.com/jpassaro/0892106beca2a066fae21320be41dcbf
原始问题(和上下文)
在某些 shell 脚本中,我必须插入 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)
那些变量或属性确实来自maven。它们要么在 pom.xml 中定义,要么在您使用的活动配置文件中定义(请参阅您的 settings.xml,很可能在您用户的主文件夹中)
属性 ${...}
的值解析为 MavenProject.toString()。 ${..}
和 ${....}
也是如此,但 ${.}
.
则不然
此 属性 的解析发生在 ReflectionValueExtractor 内。这个 class 实际上负责通过将 ${project.build.outputDirectory}
等属性转换为 project.getBuild().getOutputDirectory()
等方法链来解析值。 class 似乎无法处理两个点之间的任何属性,而是 returns project
。
属性 ${...}
及其解决方案似乎是 未记录的行为 因为它在 POM Reference nor in the Complete Reference.[=21] 中均未记录=]
已编辑
我在使用 maven-assembly-plugin 的 <filtered>true</filtered>
功能时遇到了一个奇怪的参数。
在:
some unfiltered text
foo expands to '${params.foo}'
bar expands to '${params.bar}'
"..." expands to '${...}'
输出:
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,所以它似乎来自 super pom 或过滤参数扩展工作方式的一些特殊性,但我无法弄清楚它是什么。未登录 mvn help:effective-pom
这个神秘的${...}
变量是什么?
此处可重现示例:https://gist.github.com/jpassaro/0892106beca2a066fae21320be41dcbf
原始问题(和上下文)
在某些 shell 脚本中,我必须插入 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)
那些变量或属性确实来自maven。它们要么在 pom.xml 中定义,要么在您使用的活动配置文件中定义(请参阅您的 settings.xml,很可能在您用户的主文件夹中)
属性 ${...}
的值解析为 MavenProject.toString()。 ${..}
和 ${....}
也是如此,但 ${.}
.
此 属性 的解析发生在 ReflectionValueExtractor 内。这个 class 实际上负责通过将 ${project.build.outputDirectory}
等属性转换为 project.getBuild().getOutputDirectory()
等方法链来解析值。 class 似乎无法处理两个点之间的任何属性,而是 returns project
。
属性 ${...}
及其解决方案似乎是 未记录的行为 因为它在 POM Reference nor in the Complete Reference.[=21] 中均未记录=]