2012-12-13 29 views
2

我有一个依赖目录,我想在初始化阶段在src/main/webapp/mypath中复制。 但我希望它是准确,只能复制一次,这意味着:如何阻止Maven覆盖,如果目标存在

  • 如果源和/主/ web应用/ mypath中不存在,那么从依赖
  • 复制如果源和/主/ web应用/ mypath中存在,那么即使依赖项中的一个更新,也永远不会从依赖项复制。如果存在,请不要覆盖它。决不。

我尝试了几个与复制资源和依赖的方法:解压,但Maven会始终覆盖如果mypath中从依赖关系来为新的/更新的,即使我设置为false,每一个可能的覆盖*配置我m知道。

任何意见或RTFM +链接到手册我迄今没有读过?

+0

的问题是,你为什么需要这样一个奇怪的事情? – khmarbaise

+0

原因是在项目的性质:)太长时间来解释 –

回答

0

您可以使用profiles

<profiles> 
    <profile> 
    <activation> 
     <file> 
     <missing>src/main/webapp/mypath</missing> 
     </file> 
    </activation> 
    ... copy ... 
    </profile> 
</profiles> 
+0

谢谢,我试过了,但我有几个配置文件定义,每个都有适当的激活规则,当我尝试添加另一个具有相同的激活规则( “失踪”),其他配置文件不会被激活。我明白maven(2.2.1)不允许我同时激活2个配置文件,这是真的吗? –

+1

对我来说,你可以使用maven-antrun-plugin。请参见[如何使用maven-antrun-plugin有条件地执行任务?](http://stackoverflow.com/a/1975641/651140) –

+0

听起来很有希望!我会在明天早上试试,并会返回结果,我会得到:) –

0

正如@William描述,您可以用蚂蚁插件,出口的财产,以Maven的背景和跳过任务,如果“真”。

下面是代码:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.7</version> 
    <executions> 
     <execution> 
      <phase>validate</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <exportAntProperties>true</exportAntProperties> 
       <target> 
        <available file="src/main/resources/my-data" type="dir" 
                property="dir-exits"/> 
       </target> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>copy-zip-dependencies</id> 
      <goals> 
       <goal>unpack</goal> 
      </goals> 
      <configuration> 
       <skip>${dir-exists}</skip> 
       <artifactItems> 
        <artifactItem> 
         <groupId>com.mygroup</groupId> 
         <artifactId>myartifactid</artifactId> 
         <includes>**/*.json</includes>              <outputDirectory>src/main/resources/</outputDirectory> 
        </artifactItem> 
       </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
</plugin>