java - 有没有办法可以重用 pom.xml 中定义的属性,作为另一个 *.xml 文件中的整数类型?

标签 java xml spring pom.xml hazelcast

我正在为我的项目设置 hazelcast.xml 文件。我在 pom.xml 中定义了两个配置文件,并且两者都需要位于不同的 .我在 pom 中声明了一个属性,并且在每个配置文件中我将其设置为 1 (prof1) 或 2 (profile2)。在 hazelcast.xml 中,当我尝试使用 3${myId}4 访问此变量时,IDE 显示错误,因为在 hazelcast-config-2.1.xsd 中将 multicast-port 定义为仅“int”

由于多播端口的定义有限制且基数为“xs:int”,因此访问 ${myId} 失败为字符串。

<!-- pom.xml -->

    <profiles>
        <profile>
            <id>testProfile1</id>
            <properties>
                <myId>1</myId>
            </properties>
        </profile>

        <profile>
            <id>testProfile2</id>
            <properties>
                <myId>2</myId>
            </properties>
        </profile>
    </profiles>

<!--hazelcast.xml-->

    <network>
        <port auto-increment="true">5701</port>
        <join>
            <multicast enabled="true">
                <multicast-group>someGroup${myId}</multicast-group>
                <multicast-port>3${myId}4</multicast-port>
            </multicast>
            <tcp-ip enabled="false">
                <member>localhost</member>
            </tcp-ip>
        </join>
        <socket-interceptor enabled="false" />
    </network>

我正在尝试将配置文件 1 的多播端口值设置为 314,将配置文件 2 设置为 324

Tomcat 日志:

Caused by: java.lang.NumberFormatException: For input string: "3${myId}4"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at com.hazelcast.config.XmlConfigBuilder.handleMulticast(XmlConfigBuilder.java:489)
    at com.hazelcast.config.XmlConfigBuilder.handleJoin(XmlConfigBuilder.java:435)
    at com.hazelcast.config.XmlConfigBuilder.handleNetwork(XmlConfigBuilder.java:266)
    at com.hazelcast.config.XmlConfigBuilder.handleConfig(XmlConfigBuilder.java:188)
    at com.hazelcast.config.XmlConfigBuilder.parse(XmlConfigBuilder.java:181)
    at com.hazelcast.config.XmlConfigBuilder.build(XmlConfigBuilder.java:135)

最佳答案

Hazelcast 配置变量在运行时填充,而不是在编译时填充。您可以看看相关Hazelcast Using Variables documentation .

所以,就你的情况而言:

  • 如果您仅使用 Maven 来编译应用程序,则无法使用 Maven 属性来填充 hazelcast.xml 变量
  • 如果您还使用 Maven 来运行应用程序 ( mvn exec ),则添加参数 -DmyId=SOME_VALUE给您pom.xml

关于java - 有没有办法可以重用 pom.xml 中定义的属性,作为另一个 *.xml 文件中的整数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56883055/

相关文章:

java - Logback 在 OSGi 容器中包含片段

java - 如何对 Map<String, List<CustomObject>> 进行排序?

java - 如何禁止直接访问jsp页面?

java - 我的程序中的数组似乎有什么问题? [Java 数组(练习)]

java - XML-FO 嵌套列表 block

javascript - 如何向加载到 D3.js 的外部 SVG 添加缩放 + 拖动行为?

spring - AnnotatedElementUtils错误 Spring 测试

xml - XSLT:如何使用 XSLT 将 xml 数据转换为层次结构

java - 旧版 Spring 应用程序 - 切入点值意味着什么?

spring - 错误 mvn tomcat :run but can execute in eclipse tomcat