Maven resource filtering not working - because of spring boot dependency

JavaMavenSpring Boot

Java Problem Overview


In a maven project I trying to replace some tokens using maven resource filtering but it does not work. I have some other projects which works but does not work in this single project not sure what is wrong.

The property files is in location /src/main/resources/my.properties

I tried different maven commands as below but does not work.

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>

Update:-

I figured out this problem is caused due to the spring boot dependency. If I comment the <parent> section and other spring boot dependencies, then it works fine and able to replace the token. But still not sure how to fix this by keeping spring boot.

Java Solutions


Solution 1 - Java

At last found the answer from the link in my comments. As this is a spring boot application ...special case... the notations should be

@xxxxx@  instead of ${xxxxx}

So my property file would be as below

### Spring boot properties
jdbc.url[email protected]@
ldap.domain=@ldap_domain@
ldap.url=@ldap_url@

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJayView Question on Stackoverflow
Solution 1 - JavaJayView Answer on Stackoverflow