0

由 io.fabric8 docker-maven-plugin 填充的 Maven 属性在按原样使用时似乎没有被插值。

docker-maven-plugin 填充了一些我试图解决的 maven 属性(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.15555


如果我添加一些字符,突然间值会被正确插值(但当然这些值是没用的)

<properties>
    <docker.host>${some.host}+abc</docker.host>
    <docker.port>${some.port}+123</docker.port>
</properties>

这导致127.0.0.1+abc5555+123


我尝试过的一些事情也不起作用:

<properties>
    <dollar>$</dollar>
    <docker.host>${dollar}{some.host}</docker.host>
    <docker.port>${some.port}${}</docker.port>
</properties>

这导致一个空值和5555null

4

1 回答 1

0

Roland Huß指出,使用 docker 固定端口可以避免该问题。这应该是第一选择。

但为了完成,我将添加一个同样有效的解决方案:

  1. 欺骗 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>
    
  2. 使用空属性使 maven 插入 docker-maven-plugin 暴露的属性

    <docker.host>${some.host}${empty}</docker.host>
    <docker.port>${some.port}${empty}</docker.port>
    
于 2016-08-05T09:19:22.703 回答