Java Maven依赖插件:overWrite=false忽略
我的问题是,我想用maven从Java Maven依赖插件:overWrite=false忽略,java,maven,maven-3,maven-dependency-plugin,Java,Maven,Maven 3,Maven Dependency Plugin,我的问题是,我想用maven从.jar文件中提取文件,但前提是这些文件在输出目录中不存在。因此,如果我有一个文件/src/META-INF/beans.xml,那么我只想提取persistence.xml,等等 不幸的是,maven插件irgnores使用了我尝试过的false的所有组合 问题:知道我做错了什么吗?可能吗 <build> ... <plugin> <groupId>org.apache.maven.plugins</gro
.jar
文件中提取文件,但前提是这些文件在输出目录中不存在。因此,如果我有一个文件/src/META-INF/beans.xml
,那么我只想提取persistence.xml
,等等
不幸的是,maven插件irgnores使用了我尝试过的false
的所有组合
问题:知道我做错了什么吗?可能吗
<build>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>unpack</id>
<phase>validate</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId> ... </groupId>
<artifactId> ... </artifactId>
<version>${project.version}</version>
<outputDirectory>${basedir}/src/META-INF</outputDirectory>
<includes>beans.xml,persistence.xml</includes>
<overWrite>false</overWrite>
</artifactItem>
</artifactItems>
<overWriteIfNewer>false</overWriteIfNewer>
<overWrite>false</overWrite>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteReleases>false</overWriteReleases>
</configuration>
</execution>
</executions>
</plugin>
...
</build>
...
org.apache.maven.plugins
maven依赖插件
2.10
打开
验证
打开
...
...
${project.version}
${basedir}/src/META-INF
xml,persistence.xml
假的
假的
假的
假的
假的
...
插件的simpleoverWrite
属性,因此它被插件忽略
此外,您正在编写项目的${basedir}/src/META-INF
,这可能不是最好的选择,但在某些情况下仍然是合理的
因此,您只想在项目的validate
阶段编写一次,而且很可能只在第一次构建期间编写一次:也就是说,如果存在,不要再次重写它
对于这些要求,以下可能更适合:
- 使用
- 使用文件
选项激活
:即,如果文件不存在(第一次),激活将执行插件配置的配置文件;当文件已经存在时,不要激活配置文件,显然任何操作都不会覆盖任何内容缺失
<profiles> <profile> <id>unpack-files</id> <activation> <file> <missing>${basedir}/src/META-INF/beans.xml</missing> </file> </activation> <build> <plugins> <!-- move here the maven-dependency-plugin unpack execution --> </plugins> </build> </profile> </profiles>
解包文件 ${basedir}/src/META-INF/beans.xml
- 第一次执行时,当文件不存在时,它将被激活
- 它仍然可以通过其
(id
)按需激活mvn clean install-Punpack文件
src/META-INF
?为什么不使用src/main/resources/META-INF
,让资源插件完成它的工作?这是做什么用的?我正在写一个代码生成器。生成器能够考虑手写代码(和配置)。我遇到的问题是,maven项目采用模型并从中生成代码,然后编译生成的代码(同时考虑手写代码)。生成的代码被放入gen/
,手写代码应位于src
中。如果没有提供任何配置文件,我希望使用默认配置文件。这就是为什么我只想在不存在的情况下提取它们。