maven - 使用命令行中的属性进行资源过滤
问题描述
我正在使用 maven 并希望通过使用资源过滤将一些 maven 属性写入属性文件。
除非我尝试从命令行覆盖某些属性,否则这似乎工作正常。
例如,在下面的示例中,我application-type
在 pom.xml 中将属性设置为 MIXED,但我想从命令行用 BATCH 覆盖它。即使我提供如下属性,过滤仍会将 MIXED 写入我的属性文件:-Dapplication-type=BATCH
如何将通过命令行参数提供的属性值写入属性文件?
项目结构:
.
|-- pom.xml
`-- src
`-- main
`-- resources
`-- application.properties
pom.xml(无关部分省略):
<properties>
<!-- ApplicationType should be provided via maven parameter. Allowed values: MIXED, DIALOG, BATCH -->
<application-type>MIXED</application-type>
</properties>
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<finalName>${project.artifactId}</finalName>
<!-- Apply filtering to write maven properties into properties file -->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<!-- ... -->
</build>
应用程序属性:
application-type=${application-type}
我这样称呼它:
mvn clean process-resources -Dapplication-type=BATCH
然而,生成的 application.properties(在 target/classes/application.properties 中)包含:
application-type=MIXED
而不是预期的
application-type=BATCH
解决方案
推荐阅读
- java - 两个不同 LocalContainerEntityManagerFactoryBean 上的 @PersistenceContext 抛出 TransactionRequiredException
- javascript - 如何防止用户通过PayPal购买产品时更改html?
- python - 在 Python 中读取 SendGrid 邮件对象
- flutter - 如何在颤动中显示AppBar下方的警报栏
- sql - 检查数据库中的值是否可用
- python - 如何在python中计算回归误差?
- ios - 如何在swift中找到其他类中的类实例名称?
- xml - 如何根据 Azure Logic App 中的节点名称更新 XML 节点值并删除 XML 节点
- ruby-on-rails - Rails + 谷歌 TTS。Google::Cloud::ResourceExhaustedError 8:收到的消息大于最大值(5250205 与 4194304)
- sql-server - MSSQL 是否支持 MySQL 语句“CREATE DATABASE IF NOT EXISTS {db}”的等效形式?