Maven 资源过滤不替换 属性
Maven resource filtering not replacing property
这是我的属性文件:
version = ${maven.build.timestamp}
这是我的 pom.xml 文件的样子:
<properties>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
...
<build>
<plugins>
...
</plugins>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
下面是我的目录结构:
.
├── pom.xml
├── src
│ └── main
│ ├── java
│ │ └── ...
│ ├── resources
│ │ └── application.properties
但是当我执行 mvn clean install
并打开 target/classes/application.properties
文件时,它的内容仍然是相同的:version = ${maven.build.timestamp}
为什么 属性 没有被正确替换?
这是 Maven 中的一个已知问题 (see here)。
最简单的解决方法是在您的 POM 中重新定义此 属性:
<properties>
<maven.build.timestamp>${maven.build.timestamp}</maven.build.timestamp>
</properties>
虽然这可能会像 Eclpise 一样在 IDE 中产生错误,但它仍然可以作为 maven 构建工作。或者你可以用你自己的名字重新定义这个 属性 以避免 IDE 警告。
这是我的属性文件:
version = ${maven.build.timestamp}
这是我的 pom.xml 文件的样子:
<properties>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
...
<build>
<plugins>
...
</plugins>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
下面是我的目录结构:
.
├── pom.xml
├── src
│ └── main
│ ├── java
│ │ └── ...
│ ├── resources
│ │ └── application.properties
但是当我执行 mvn clean install
并打开 target/classes/application.properties
文件时,它的内容仍然是相同的:version = ${maven.build.timestamp}
为什么 属性 没有被正确替换?
这是 Maven 中的一个已知问题 (see here)。 最简单的解决方法是在您的 POM 中重新定义此 属性:
<properties>
<maven.build.timestamp>${maven.build.timestamp}</maven.build.timestamp>
</properties>
虽然这可能会像 Eclpise 一样在 IDE 中产生错误,但它仍然可以作为 maven 构建工作。或者你可以用你自己的名字重新定义这个 属性 以避免 IDE 警告。