我如何完全按照io.fabric8 docker-maven-plugin提供的属性使用?

时间:2016-08-03 13:28:15

标签: maven properties fabric8

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

我试图解决的

The docker-maven-plugin fills in some maven propertiessome.hostsome.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

1 个答案:

答案 0 :(得分: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. 使用empty属性使maven插入docker-maven-plugin公开的属性

    <docker.host>${some.host}${empty}</docker.host>
    <docker.port>${some.port}${empty}</docker.port>