如何通过 Maven 覆盖优先级较低的资源文件?

How to overwrite resource file with less priority via Maven?

在我们的 maven 模块中,我们有多个资源文件夹

src/main/prod/sqlsrc/main/dev/sql。在产品中,我们有用于生产的脚本,其中有大量数据插入。当 profile local 已激活。

这里是配置

 <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>

当我们使用全新安装构建模块时,目标目录中总是有来自 prod/sql 的脚本。你能告诉我我做错了什么吗?谢谢。

你用 mvn clean install 构建吗?

如果是这种情况,<activeByDefault>true</activeByDefault> 参数不允许 local 配置文件默认为 运行,您应该使用 mvn clean install -Plocal 构建,加载 local 构建期间的配置文件

或者,修改 pom.xml 以始终使用 local 配置文件:

<profiles>
    <profile>
        <id>local</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
...