java如何用xml文件中的实际值替换变量,该文件位于Maven的另一个依赖项jar文件中
我们有一个名为web-app1的项目,它依赖于另一个名为core app的jar文件。jar由另一个团队作为共享库提供,但有一个hibernate。cfg。这个核心应用程序中的xml。jar(在jar内部),内容如下
<hibernate-configuration>
<session-factory>
<property name="dialect">${hibernate.dialect}</property>
<property name="query.substitutions"><![CDATA[false 'N', true 'Y']]></property>
<property name="show_sql">false</property>
<property name="format_sql">false</property>
<property name="use_sql_comments">false</property>
<property name="generate_statistics">true</property>
<property name="hibernate.connection.release_mode">after_transaction</property>
<!-- Search Configurations -->
<property name="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</property>
<property name="hibernate.search.default.indexBase">${lucene.index.home}</property>
<property name="hibernate.search.default.batch.merge_factor">10</property>
<property name="hibernate.search.default.batch.max_buffered_docs">10</property>
</session-factory>
</hibernate-configuration>
正如我们在搜索配置部分看到的,有一个变量${lucene.index.home},应该由不同操作系统平台上的其他项目替换,
那么问题是,maven是否提供了一种过滤依赖项jar文件并过滤内容的方法?有插件吗?战争:战争,解压?依赖关系?我想不出一个快速的方法。在我看来,无论采用什么插件,插件基本上需要做4件事
- 1.打开罐子的包装 过程资源阶段李>
- 2.将${var}替换为 配置文件中定义的值李>
- 3.再把它装回罐子里李>
- 4.需要将其从 打包/解包工作区返回 maven进程路径李>
以前有没有人遇到过类似的要求
谢谢
# 1 楼答案
我假设这些值是在运行时设置的,很可能是VM参数。提供一个必须修改才能使用的jar文件是没有意义的
# 2 楼答案
如果您真的必须在构建时出于配置目的进行过滤,那么应该过滤这些配置文件,而不是您的依赖项。然后,您应该将所述文件捆绑成多个工件(当然假设您针对的是多个环境),或者在构建工件之外作为外部化资源提供