2

in our maven module we have multiple resource folders

src/main/prod/sql and src/main/dev/sql. In prod we have scripts for production where are a lot of data inserts. We need overwrite some files in prod/sql directory with files in dev/sql when profile local is activated.

Here is configuration

 <profiles>
    <profile>
        <id>local</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.1.0</version>
                    <executions>
                        <execution>
                            <id>copy-files</id>
                            <phase>process-resources</phase>
                            <goals>
                                <goal>copy-resources</goal>
                            </goals>
                            <configuration>
                                <overwrite>true</overwrite>
                                <outputDirectory>${basedir}/target/classes/sql</outputDirectory>
                                <resources>
                                    <resource>
                                        <directory>src/main/dev/</directory>
                                        <filtering>true</filtering>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>

When we build modile with clean install there are always scripts from prod/sql in target directory. Can you tell me what I do wrong? Thank you.

Denis Stephanov
  • 4,563
  • 24
  • 78
  • 174

1 Answers1

1

Do you build with mvn clean install?

If thats the case, the <activeByDefault>true</activeByDefault> parameter is not allowing the local profile to be run by default, you should build with mvn clean install -Plocal which loads the local profile during build

Alternatively, modify pom.xml to always use the local profile:

<profiles>
    <profile>
        <id>local</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
...
Oh Chin Boon
  • 23,028
  • 51
  • 143
  • 215