我正在为我的项目设置 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/