Java 使用pom生成时更改应用程序上下文文件

Java 使用pom生成时更改应用程序上下文文件,java,spring,maven,Java,Spring,Maven,我有一个spring批处理作业的application-context.xml文件,它使用属性占位符从database.properties读取值 我正在使用pom文件构建tar.gz文件 我在unix机器上构建并解压缩它。然后在检查应用程序上下文文件后,它的占位符值被更改为maven url 接下来的事情正在发生 建造前: <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataS

我有一个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资源插件完成,可以在POM中关闭


有关详细信息,请参阅。

您正在使用maven筛选文件

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

在您的情况下,maven使用的占位符与Spring使用的占位符相同,因此您有几个选项:

1) 将占位符转义为

这将解决您的问题,但如果您依赖于其他地方的筛选,则需要更改这些文件


3) 禁用筛选为。这可能是最简单的解决方案,但也可能会破坏一切。

可能的是,URL已通过过滤“maven资源插件”进行更改:


其他一些插件也支持过滤,请检查pom.xml。

我怀疑您在pom中声明${}或{}表示在复制过程中需要由Maven替换的令牌。你最好展示一下pom,谢谢。我检查了我的pom文件,它包括另一个包含此筛选语句的descriptor.xml文件。但我并没有改变任何其他内容,而是在pom.xml中对url标记进行了注释。这是非常有用的,因为我是pom的新手。
<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>
<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>