2016-04-08 53 views
54

在一个maven项目中,我试图用maven资源过滤替换一些令牌,但它不起作用。我有一些其他的项目可以工作,但不能在这个单一的项目中工作,不知道有什么问题。Maven资源过滤不起作用 - 因为弹簧引导依赖关系

的属性文件中的位置/src/main/resources/my.properties

我尝试不同的Maven命令如下,但不起作用。

mvn clean install 
mvn clean install resources:resources 

my.properties

### Spring boot properties 
jdbc.url=${jdbc.url} 
ldap.domain=${ldap_domain} 
ldap.url=${ldap_url} 

的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.jai</groupId> 
    <artifactId>client</artifactId> 
    <version>0.0.6-SNAPSHOT</version> 
    <name>client</name> 
    <description>client web application</description> 
    <packaging>war</packaging> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.3.2.RELEASE</version> 
     <relativePath /> 
    </parent> 


    <dependencies> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-security</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-tomcat</artifactId> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-ldap</artifactId> 
     </dependency> 

    </dependencies> 

    <build> 
     <finalName>client</finalName> 

     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering> 
      </resource> 
     </resources> 

     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 

      <plugin> 
       <artifactId>maven-war-plugin</artifactId> 
       <configuration> 
        <warSourceDirectory>WebContent</warSourceDirectory> 
        <failOnMissingWebXml>false</failOnMissingWebXml> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>exec-bower-install</id> 
         <phase>generate-sources</phase> 
         <configuration> 
          <executable>bower</executable> 
          <arguments> 
           <argument>install</argument> 
          </arguments> 
         </configuration> 
         <goals> 
          <goal>exec</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

     </plugins> 

    </build> 


    <profiles> 
     <!-- localhost environment --> 
     <profile> 
      <id>local</id> 

      <activation> 
       <activeByDefault>true</activeByDefault> 
      </activation> 

      <properties> 

       <ldap_domain>mydomain.local</ldap_domain> 
       <ldap_url>ldap://server:389</ldap_url> 
       <jdbc.url>testttttttttttttttttttttt</jdbc.url> 

      </properties> 
     </profile> 

     </profiles> 

</project> 

更新: -

我想通了这问题是由于弹簧引导依赖性引起的。 如果我评论<parent>部分和其他弹簧引导依赖关系,那么它工作正常,能够替换令牌。但仍然不确定如何通过保持弹簧启动来解决这个问题。

+2

看来,这是在春季启动HTTPS的缺陷: //github.com/spring-projects/spring-boot/issues/980 – Jay

+0

仍然是弹簧引导的问题1.5.9.RELEASE – jediz

回答

113

最后在我的评论中找到了链接的答案。由于这是一个春天启动应用程序...特例...的符号应该是

@[email protected] instead of ${xxxxx} 

所以我的财产文件将是如下

### Spring boot properties 
[email protected]@ 
[email protected][email protected] 
[email protected][email protected] 
+4

在https://docs.spring.io/spring-boot中有更多的相关信息/docs/current/reference/html/howto-properties-and-configuration.html – pedrocgsousa

+0

只是为了防止人们狩猎,这在SB 1.3.0中有所改变。这是https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.3-Release-Notes#maven-resources-filtering – mdo123

+0

这使我的一天;-)非常感谢! – pixelstuermer