Jenkins用它的系统属性更新我的applicationContext.xml文件?

时间:2015-01-13 14:47:13

标签: spring ssl jenkins spring-security

这太疯狂了......

我有一个applicationContext.xml,它使用系统属性配置bean。

在我的情况下,我正在配置一个bean来从一个文件中注入值,或者如果没有那么查看system.properties(我希望这只会在运行时发生!)

我有:

<bean id="myBean" class="foo.foo.fooBarImpl">
  <property name="keyStoreFile" value="${javax.net.ssl.KeyStore}"/>
...
...
</bean>

因此,当我使用此applicationContext.xml的Java应用程序(位于类路径中的jar内)启动时,它将从属性文件中提取${javax.net.ssl.KeyStore},或者如果属性文件不存在,则尝试从系统属性中获取它。

我无法解释的是......当jenkins从存储库中拉出来并构建.. 它正在修改我的applicationContext.xml!并实际写入系统属性中存在的内容..并在构建.jar之前保存它!我的jar现在作为SSL信息的硬编码值(如密码......)

  <bean id="myBean" class="foo.foo.fooBarImpl">
      <property name="keyStoreFile" value="/mympath/keystore.jks"/>
    ...
    ...
    </bean>

上面修改过的applicationContext.xml现在在我的.jar!?

是否有一个设置在Spring或Jenkins(可能)中阻止我的applicationContext.xml被修改并重新保存到.jar中?

1 个答案:

答案 0 :(得分:1)

你在构建中使用Maven吗?

可能是maven资源过滤正在进行中。

请尝试像

这样的pom.xml
<project>
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>false</filtering>
        <includes>
          <include>**/applicationContext.xml</include>
        </includes>
      </resource>
      ...
    </resources>
    ...
  </build>
  ...
</project>