java - 在 Maven 中将一个属性分配给另一个属性

标签 java maven-2

我的 Maven 项目有两个属性,用于过滤持久性配置文件:

<database-url>jdbc:mysql://localhost/${database-name}?autoReconnect=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=UTF-8&amp;amp;rewriteBatchedStatements=true&amp;amp;useServerPrepStmts=false&amp;amp;useCursorFetch=true</database-url>
<test-database-url>jdbc:mysql://localhost/${test-database-name}?autoReconnect=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=UTF-8&amp;amp;rewriteBatchedStatements=true&amp;amp;useServerPrepStmts=false&amp;amp;useCursorFetch=true</test-database-url>

属性需要进行双重 XML 编码,因为配置文件本身是一个 XML 文档,Maven 在资源过滤期间解析 XML 实体。

我希望能够直接从我的 IDE 运行我的测试,所以我创建了一个配置文件并将一个属性设置为另一个。

<database-url>${test-database-url}</database-url>

问题是Maven解析了属性设置中的entities,然后在过滤配置文件的时候又解析了一遍,也就是说我的配置文件是无效的XML。

有没有办法在不解析 XML 实体的情况下将一个属性设置为另一个属性?

最佳答案

不是直接的答案,但是...为什么不根据配置文件对同一属性使用不同的值。例如,(默认)开发配置文件将具有:

<database.url>jdbc:mysql://localhost:3306/app_dev</database.url>

测试配置文件将具有:

<database.url>jdbc:mysql://localhost:3306/app_test</database.url>

如果这不是你想要的,也许有一个单独的 database.url 属性作为 url 并传递一个系统属性,比如 -Ddatabase-name=app_xxx这个名字就可以了。

但我可能遗漏了一些东西。

关于java - 在 Maven 中将一个属性分配给另一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2155839/

相关文章:

java - 正则表达式数组列表

java - 马文 2 : How to package current project version in a WAR file?

java - 不同模块的注释 spring 上下文的问题

eclipse - Maven 原型(prototype)未出现在 m2eclipse Nexus 索引器中

maven-2 - 在 Maven 中指定 ejb 客户端作为依赖项

java - Selenium @FindBy - 你什么时候会使用How?

java - Android:如何让 Cardviews 在 Recyclerview 中重叠?

maven-2 - 构建装配体时出现许多 "META-INF/already added, skipping"警告

java - Postgres/JDBC/逻辑复制 - 内存不足问题

JavaFX - 哪种事件监听器方法更有效?