Mercer
Mercer

Reputation: 9986

Replace value in my Web.xml with maven

I have in my Web.xml a value

<display-name> MyApp version @minorversion@- Pré prod </display-name>

I want to know if It’s possible to read a properties file with maven to replace the value in my Web.xml when I want to compile or package..?

Upvotes: 1

Views: 1209

Answers (2)

question_maven_com
question_maven_com

Reputation: 2475

  1. Add src\main\resources\conf.properties:

    minorversion=1.0.0.0
    
  2. pom.xml

           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <resourceEncoding>${project.build.sourceEncoding}</resourceEncoding>
                    <webResources>
                         <resource>
                              <filtering>true</filtering>
                              <directory>src/main/webapp</directory>
                              <includes>
                                <include>**/web.xml</include>
                              </includes>
                            </resource>
                    </webResources>
                    <filters>
                      <filter>src/main/resources/conf.properties</filter>
                    </filters>
                </configuration>
            </plugin>
    
  3. web.xml

    ...
    @minorversion@
    

    or

    ${minorversion}
    ...
    

Upvotes: 1

Revive
Revive

Reputation: 2248

You can use the maven-replacer-plugin

              <plugin>
                    <groupId>com.google.code.maven-replacer-plugin</groupId>
                    <artifactId>replacer</artifactId>
                    <version>1.5.3</version>
                    <executions>
                        <execution>
                            <id>REPLACE</id>
                            <goals>
                                <goal>replace</goal>
                            </goals>
                            <phase>{Phase to execute in}</phase>
                          <configuration>
                                <file>${Path to file to replace}</file>
                                <regex>true</regex>
                                <token>${Regex to match in file}</token>
                                <value>${New Value to Replace matched}</value>
                                <regexFlags>
                                    <regexFlag>MULTILINE</regexFlag>
                                    <regexFlag>DOTALL</regexFlag>
                                </regexFlags>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

Upvotes: 0

Related Questions