2012-12-13 39 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>