如何通过 Maven 覆盖优先级较低的资源文件?
How to overwrite resource file with less priority via Maven?
在我们的 maven 模块中,我们有多个资源文件夹
src/main/prod/sql
和 src/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>
...
在我们的 maven 模块中,我们有多个资源文件夹
src/main/prod/sql
和 src/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>
...