2013-10-16 81 views
35

Maven resources plugin複印多資源目錄,獨立的目標目錄與Maven

這個目標,您需要配置要複製的資源,並指定輸出目錄。使用maven(見blahuggh)的basedir到構建輸出目錄內

複製兩個(或更多)的外部資源目錄。

${basedir}/ 
    - pom.xml 
    - blah/ 
    - uggh/ 
    - src/ 
    - main/.. 
    - test/.. 
    - target/ 
    - classes/.. 
    - blah/ 
    - uggh/ 

例如,給定的目錄結構使用maven上述複製blahuggh到目標目錄。複製一個或另一個很容易,但是,該插件只接受一個outputDirectory。如果您指定target目錄和兩個目錄作爲資源,則每個目錄的內容將被複制到target而不是目錄本身。

該插件的其他用途將覆蓋初始值。另外,我試過指定整個basedir,只包含所需的目錄。這不會複製任何內容。

這裏是複製單個目錄的一個示例:

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.6</version> 
    <executions> 
     <execution> 
     <id>copy-resources</id> 
     <phase>validate</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${basedir}/target/blah</outputDirectory> 
      <resources> 
      <resource> 
       <directory>blah</directory> 
       <filtering>true</filtering> 
      </resource> 
      </resources> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

回答

58

這就是文件結束:

<outputDirectory>${basedir}/target/blah</outputDirectory> 

這是它是從複製:

<directory>src/main/otherresources</directory> 

將會有一個<include><includes>標記告訴文件名稱

倍數

您需要多個<execution> s的不同<id> S代表多個文件夾:

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.6</version> 
    <executions> 
     <execution> 
     <id>copy-resources-1</id> 
     <phase>validate</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${basedir}/target/blah</outputDirectory> 
      <resources> 
      <resource> 
       <directory>blah</directory> 
       <filtering>true</filtering> 
      </resource> 
      </resources> 
     </configuration> 
     </execution> 
     <execution> 
     <id>copy-resources-2</id> 
     <phase>validate</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${basedir}/target/ughh</outputDirectory> 
      <resources> 
      <resource> 
       <directory>ughh</directory> 
       <filtering>true</filtering> 
      </resource> 
      </resources> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
+0

其中是文件systen上的文件夾? src/main/resources/ughh? – Gobliins

+0

我正在使用maven 3.3.3這仍然有可能嗎? – Gobliins

11

對於我這樣一個效果很好的Maven 3:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.5</version> 
      <executions> 
       <execution> 
        <id>custom-resources</id> 
        <phase>process-resources</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${project.build.directory}</outputDirectory> 
         <resources>           
          <resource> 
           <targetPath>${basedir}/target/blah</targetPath> 
           <directory>blah</directory> 
           <filtering>true</filtering> 
          </resource>    
          <resource> 
           <targetPath>${basedir}/target/uggh</targetPath> 
           <directory>uggh</directory> 
           <filtering>false</filtering> 
          </resource>    
         <encoding>UTF-8</encoding> 
        </configuration>    
       </execution> 
      </executions> 
     </plugin> 
+1

這會將'blah'和'uggh'的所有內容轉儲到'target',而不是我自己的目錄本身。不完全是我在找什麼,但感謝您的建議 – bnjmn

+0

單從配置我不清楚,我怎麼會期望這表現。從Maven文檔中,''「與目標/類目錄相關」。 http://maven.apache.org/ref/3.2.2/maven-model/apidocs/org/apache/maven/model/Resource.html#setTargetPath(java.lang.String) – Stewart

+0

我剛剛試過了,它也適用於「maven-war-plugin」以及 – atom88

7

這是簡單的解決方案,我發現它的工作...

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.7</version> 
      <configuration> 
      </configuration> 
     </plugin> 
    </plugins> 
    <resources> 
     <resource> 
      <directory>${basedir}/src/main/java/org/mc2/mymusic/gui/main/Menu/resources</directory> 
      <targetPath>${basedir}/target/classes/org/mc2/mymusic/gui/main/Menu/resources</targetPath> 
      <filtering>false</filtering> 
     </resource> 
    </resources> 
</build> 

馬爾科

+0

即使沒有過濾部分(因爲我使用它爲普通文件),漂亮和整齊的語法 – hight3k

4

你可以使用螞蟻式樣

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.7</version> 
    <executions> 
     <execution> 
      <id>copy-resources</id> 
      <phase>validate</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.build.directory}</outputDirectory> 
       <resources> 
        <resource> 
         <directory>${basedir}</directory> 
         <includes> 
          <include>blah/**</include> 
          <include>uggh/**</include> 
         </includes> 
        </resource> 
       </resources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
0
<resources> 
     <resource> 
       <directory>${basedir}/src/scripts</directory> 
       <includes> 
        <include>data-octopus.ps1</include> 
       </includes> 
       <targetPath>${basedir}/target/data</targetPath> 
     </resource> 
     <resource> 
       <directory>${basedir}/src/scripts</directory> 
       <includes> 
        <include>service-octopus.ps1</include> 
       </includes> 
       <targetPath>${basedir}/target/service</targetPath> 
     </resource> 
    </resources> 

    </plugins> 
     ... 
    </plugins>