我的问题是,我想从带有maven的.jar文件中提取文件,但前提是这些文件不存在于输出目录中。因此,如果我有一个文件/src/META-INF/beans.xml,那么我只希望提取persistence.xml,等等。
可悲的是,maven-plugin与<overWrite>false</overWrite>的所有组合,我尝试过。
问题:知道我做错了什么吗?有可能吗?
<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>发布于 2016-09-02 12:55:47
简单的overWrite属性实际上是插件的不作为财产存在,因此它被插件忽略了。
此外,您正在写信给${basedir}/src/META-INF,您的项目,这可能不是最好的选择,但在某些情况下仍然可能是合理的。
因此,您只想在项目的validate阶段编写它一次,并且很可能只在第一次构建期间编写它:也就是说,如果存在,就不要再次重写它。
对于这些要求,以下几点可能更适合:
activation选项missing:也就是说,如果文件不存在(第一次),激活将执行插件配置的配置文件;当文件已经存在时,不要激活配置文件,显然没有任何操作不会覆盖任何内容。
解包-文件${basedir}/src/META/beans.xml因此,您仍然可以完全控制这一逻辑:
id (mvn clean install -Punpack-files)按需激活。https://stackoverflow.com/questions/39292709
复制相似问题