gpt4 book ai didi

java - 使用 pom 构建时应用程序上下文文件被更改

转载 作者:行者123 更新时间:2023-11-30 08:28:55 24 4
gpt4 key购买 nike

我有用于 spring 批处理作业的 application-context.xml 文件,它使用属性占位符从 database.properties 读取值。

我正在使用 pom 文件构建 tar.gz 文件。

我在 unix 机器上构建并解压它。然后在检查应用程序上下文文件后,其占位符值更改为 maven url。

正在发生以下情况。

构建前:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${driverClassName}" />
<property name="url"
value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" /></bean>

在执行 maven 安装后通过以下方式进行更改:

 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${driverClassName}" />
<property name="url"
value="http://maven.apache.org" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</bean>

pom 文件中声明了“url”变量,其中 url 值被替换。 pom 中的变量是否会改变它在应用程序上下文文件中的值?为什么 pom 会读取/编辑应用程序上下文文件?

任何人都可以遇到同样的问题吗?感谢您的帮助。

最佳答案

您正在使用 maven 过滤文件。

过滤时,maven 会像在 POM 中一样替换文件中的占位符。如果您想动态分配值,这将非常有用。

在您的情况下,maven 使用的占位符与 Spring 使用的占位符相同,因此您有多种选择:

1) 转义占位符,如here

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
...
<escapeString>\</escapeString>
...
</configuration>
</plugin>
</plugins>
...
</build>

然后在文件中您将拥有 \${}

2) 更改 maven 的 delimiters

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
...
<delimiters>
<delimiters>@</delimiters>
</delimiters>
...
</configuration>
</plugin>
</plugins>
...
</build>

这会解决您的问题,但如果您依赖其他地方的过滤,则需要更改这些文件。

3) 禁用过滤为 here .这可能是最简单的解决方案,但也可能会造成破坏。

关于java - 使用 pom 构建时应用程序上下文文件被更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19857086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com