io.fabric8 docker-maven-plugin填充的Maven属性在按原样使用时似乎不会被插值。
我试图解决的 The docker-maven-plugin fills in some maven properties(some.host
和some.port
)。
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.15.5</version>
<configuration>
<images>
<image>
<alias>...</alias>
<name>...</name>
<run>
<ports>
<port>+some.host:some.port:5432</port>
</ports>
<namingStrategy>alias</namingStrategy>
</run>
</image>
</images>
</configuration>
</plugin>
它们的用法如下:
<properties>
<docker.host>${some.host}</docker.host>
<docker.port>${some.port}</docker.port>
</properties>
导致两个空值。它们不包含任何内容127.0.0.1
和5555
。
如果我添加一些字符,突然会正确插值(但当然这些值是没用的)
<properties>
<docker.host>${some.host}+abc</docker.host>
<docker.port>${some.port}+123</docker.port>
</properties>
导致127.0.0.1+abc
和5555+123
我试过的一些事情也不起作用:
<properties>
<dollar>$</dollar>
<docker.host>${dollar}{some.host}</docker.host>
<docker.port>${some.port}${}</docker.port>
</properties>
导致空值5555null
答案 0 :(得分:0)
Roland Huß注意到使用docker固定端口可以避免此问题。这应该是第一选择。
但是为了完成,我将添加一个也有效的解决方案:
欺骗maven创建一个空属性(例如,使用groovy-maven-plugin)
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<id>set empty property</id>
<phase>initialize</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
<![CDATA[
project.properties.setProperty('empty', '');
]]>
</source>
</configuration>
</execution>
</executions>
</plugin>
使用empty属性使maven插入docker-maven-plugin公开的属性
<docker.host>${some.host}${empty}</docker.host>
<docker.port>${some.port}${empty}</docker.port>