java - 有没有办法可以重用 pom.xml 中定义的属性,作为另一个 *.xml 文件中的整数类型?
问题描述
我正在为我的项目设置 hazelcast.xml 文件。我在 pom.xml 中定义了两个配置文件,并且都需要在不同的 . 我在 pom 中声明了一个属性,并在每个配置文件中将其设置为 1 (prof1) 或 2 (profile2)。在 hazelcast.xml 中,当我尝试使用 3${myId}4 访问此变量时,IDE 显示错误,因为在 hazelcast-config-2.1.xsd 中将 mulitcast-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>
我正在尝试将多播端口值设置为 profile1 的 314 和 profile2 的 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 文档。
所以,在你的情况下:
- 如果您使用 Maven 只是为了编译您的应用程序,那么您不能使用 Maven 属性来填充 hazelcast.xml 变量
- 如果您还使用 Maven 来运行您的应用程序 (
mvn exec
),那么您将参数添加-DmyId=SOME_VALUE
到您的pom.xml
推荐阅读
- sql - SQL 计算两列中的元素
- laravel - make:request rules() laravel 中的 Foreach 循环
- html - Postgres返回按列分组的HTML表格标签以获取结果集
- mysql - Hbm2ddl 更新不会删除约束
- node.js - 如何从 Node.js 中的现有 PDF 文件调整图像大小?
- reactjs - 等待异步提交表单调度完成,然后再继续下一行
- ios - 如何将 3rd-Party 框架添加到 Delphi iOS 项目?
- javascript - 如何返回包含第二个数组中所有值的正确数组
- javascript - 使用 JavaScript 烧瓶更改图像
- php - 尝试在单击按钮时发送电子邮件,但它一直显示错误