Parent pom providing dependency and plugin management for applications built with Maven
—
Automatic resource filtering and processing for Spring Boot applications, handling configuration files and static resources with intelligent filtering and encoding support.
Application configuration files that undergo property substitution during the build process.
/**
* Filtered resource configuration for Spring Boot configuration files
* Applies property substitution using configured delimiters
* Includes: application*.yml, application*.yaml, application*.properties
*/
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/application*.yml</include>
<include>**/application*.yaml</include>
<include>**/application*.properties</include>
</includes>
</resource>Usage Examples:
# src/main/resources/application.properties
app.name=@project.name@
app.version=@project.version@
app.description=@project.description@# src/main/resources/application.yml
app:
name: '@project.name@'
version: '@project.version@'
build-time: '@maven.build.timestamp@'Static resources that should not undergo property substitution to preserve their original content.
/**
* Non-filtered resource configuration for static assets
* Excludes configuration files from filtering to prevent corruption
* Includes: All resources except application configuration files
*/
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>**/application*.yml</exclude>
<exclude>**/application*.yaml</exclude>
<exclude>**/application*.properties</exclude>
</excludes>
</resource>Usage Examples:
Static files that remain unchanged during build:
src/main/resources/static/css/styles.csssrc/main/resources/templates/index.htmlsrc/main/resources/data/sample.jsonsrc/main/resources/certificates/keystore.jksMaven resources plugin configuration with encoding and delimiter settings.
/**
* Maven resources plugin configuration
* Controls encoding and property substitution behavior
*/
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<propertiesEncoding>${project.build.sourceEncoding}</propertiesEncoding>
<delimiters>
<delimiter>${resource.delimiter}</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin># Before filtering (in source)
server.port=@server.port@
app.name=@project.name@
build.version=@project.version@
# After filtering (in target)
server.port=8080
app.name=my-spring-app
build.version=1.0.0# application.yml
app:
name: '@project.name@'
profile: '@spring.profiles.active@'
# application-dev.yml
server:
port: 8080
# application-prod.yml
server:
port: 80# Source configuration
database:
url: 'jdbc:postgresql://@db.host@:@db.port@/@db.name@'
username: '@db.username@'
password: '@db.password@'
# Maven properties (in pom.xml or profiles)
<properties>
<db.host>localhost</db.host>
<db.port>5432</db.port>
<db.name>myapp</db.name>
<db.username>appuser</db.username>
<db.password>secret</db.password>
</properties>src/
└── main/
└── resources/
├── application.yml # Filtered
├── application-dev.yml # Filtered
├── application-prod.yml # Filtered
├── application.properties # Filtered
├── static/ # Not filtered
│ ├── css/
│ ├── js/
│ └── images/
├── templates/ # Not filtered
│ └── index.html
├── data/ # Not filtered
│ └── initial-data.sql
└── META-INF/ # Not filtered
└── spring.factoriesInstall with Tessl CLI
npx tessl i tessl/maven-org-springframework-boot--spring-boot-starter-parent