Maven copy resources为profile once默认值执行两次一次
我有一个maven项目,其中我定义了一个基于Maven copy resources为profile once默认值执行两次一次,maven,maven-profiles,maven-resources-plugin,Maven,Maven Profiles,Maven Resources Plugin,我有一个maven项目,其中我定义了一个基于配置文件的构建,包括一个自定义maven资源插件配置 ... <profiles> <profile> <id>docker</id> <build> <plugins> <plugin> <groupId>org.apac
配置文件的构建,包括一个自定义maven资源插件
配置
...
<profiles>
<profile>
<id>docker</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>resources</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>log4j2*.xml</exclude>
<exclude>docker/*</exclude>
</excludes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
...
。。。
码头工人
org.apache.maven.plugins
maven资源插件
3.1.0
资源
产生资源
复制资源
${basedir}/target/classes
${basedir}/src/main/resources
假的
log4j2*.xml
码头工人/*
...
现在,当我执行例如mvn compile-p docker
时,我可以看到资源插件执行了两次
信息]---maven资源插件:3.1.0:复制资源(资源)@mma访问管理授权服务器---
[信息]使用“UTF-8”编码复制筛选的资源
[信息]正在复制2个资源
[信息]---maven资源插件:3.1.0:资源(默认资源)@mma访问管理授权服务器---
[信息]使用“UTF-8”编码复制筛选的资源
[信息]正在复制5个资源
是这样吗?我真的必须排除默认构建的所有资源,以避免通过默认资源再次复制它们吗?不要再次将插件绑定到生成资源阶段。
仅使用配置标记时,可以更改默认执行的配置
...
<profiles>
<profile>
<id>docker</id>
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>log4j2*.xml</exclude>
<exclude>docker/*</exclude>
</excludes>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
...
。。。
码头工人
maven资源插件
3.1.0
${basedir}/src/main/resources
假的
log4j2*.xml
码头工人/*
...
当我没有将其绑定到某个阶段/目标时,插件不会执行?是的,当您没有在配置文件中绑定它时,插件只会在配置文件中指定的配置下执行一次。谢谢,它可以工作。我忽略了将配置放在执行部分之外,这有点像。插件可以在生命周期中运行多次,甚至在同一阶段。提示将是您给出的执行id:resources-如果您想要替换默认值,您需要使用相同的执行id-如果您想要将配置放置在执行块中。如果存在不同的插件,则插件将在每次配置的执行中运行。