Maven,Docker获取主机系统的实际IP地址

Maven,Docker获取主机系统的实际IP地址,maven,docker,maven-3,docker-maven-plugin,Maven,Docker,Maven 3,Docker Maven Plugin,我和Maven已经配置了Apache Kafka+ZooKeeper容器: <image> <name>wurstmeister/zookeeper:${zookeeper.version}</name> <alias>zookeeper</alias> <run> <ports> <port>${zookeeper.port}:2181

我和Maven已经配置了Apache Kafka+ZooKeeper容器:

<image>
    <name>wurstmeister/zookeeper:${zookeeper.version}</name>
    <alias>zookeeper</alias>
    <run>
        <ports>
            <port>${zookeeper.port}:2181</port>
        </ports>
    </run>
</image>

<image>
    <name>wurstmeister/kafka:${kafka.version}</name>
    <alias>kafka</alias>
    <run>
        <ports>
            <port>9093:9092</port>
        </ports>
        <links>
            <link>zookeeper:zookeeper</link>
        </links>
        <env>
            <KAFKA_ADVERTISED_HOST_NAME>192.168.1.202</KAFKA_ADVERTISED_HOST_NAME>
            <KAFKA_ADVERTISED_PORT>9093</KAFKA_ADVERTISED_PORT>
            <KAFKA_ZOOKEEPER_CONNECT>zookeeper:${zookeeper.port}</KAFKA_ZOOKEEPER_CONNECT>
        </env>
    </run>
</image>
如何将此插件与某个阶段/目标绑定,以便在某个早期初始化阶段自动调用它,而无需每次手动调用
build helper:local ip

默认情况下绑定到生命周期阶段:流程测试类

您可以将其更改为绑定到您想要的任何阶段,例如

            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>local-ip</goal>
                    </goals>
                    <phase>initialize</phase>
                </execution>
            </executions>
        </plugin>

org.codehaus.mojo
构建助手maven插件
本地ip
初始化

默认情况下绑定到生命周期阶段:流程测试类

您可以将其更改为绑定到您想要的任何阶段,例如

            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>local-ip</goal>
                    </goals>
                    <phase>initialize</phase>
                </execution>
            </executions>
        </plugin>

org.codehaus.mojo
构建助手maven插件
本地ip
初始化

来自build helper maven插件的
本地ip
仅返回
127.0.0.1

在我的用例中,网络地址是必需的-类似于
192.168.17.112

<plugin>
    <groupId>org.codehaus.groovy.maven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <executions>
        <execution>
            <phase>generate-resources</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <source>
                    java.net.DatagramSocket socket = new java.net.DatagramSocket()
                    socket.connect(java.net.InetAddress.getByName('google.com'), 80)
                    project.properties['host.address'] = socket.getLocalAddress().getHostAddress()
                </source>
            </configuration>
        </execution>
    </executions>
</plugin>

org.codehaus.groovy.maven

)

来自build helper maven插件的
本地ip
仅返回
127.0.0.1

在我的用例中,网络地址是必需的-类似于
192.168.17.112

<plugin>
    <groupId>org.codehaus.groovy.maven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <executions>
        <execution>
            <phase>generate-resources</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <source>
                    java.net.DatagramSocket socket = new java.net.DatagramSocket()
                    socket.connect(java.net.InetAddress.getByName('google.com'), 80)
                    project.properties['host.address'] = socket.getLocalAddress().getHostAddress()
                </source>
            </configuration>
        </execution>
    </executions>
</plugin>

org.codehaus.groovy.maven

)

对于docker compose托管容器,主机的默认网络地址为172.17.0.1感谢您的评论。不幸的是,我的卡夫卡设置无法正常使用此IP地址,只能使用实际的主机IP。有关docker compose托管容器的更多详细信息,请参见以下问题。主机的默认网络地址为172.17.0.1感谢您的评论。不幸的是,我的卡夫卡设置无法正常使用此IP地址,只能使用实际的主机IP。有关更多详细信息,请参见以下问题
<plugin>
    <groupId>org.codehaus.groovy.maven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <executions>
        <execution>
            <phase>generate-resources</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <source>
                    java.net.DatagramSocket socket = new java.net.DatagramSocket()
                    socket.connect(java.net.InetAddress.getByName('google.com'), 80)
                    project.properties['host.address'] = socket.getLocalAddress().getHostAddress()
                </source>
            </configuration>
        </execution>
    </executions>
</plugin>