2012-09-14 42 views
1

我想要将一些资源复制到2个不同的目录中。我怎样才能在POM中指定这个?Maven:我可以在WEB-INF和其他目录中复制资源吗?

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.6</version> 
    <executions> 
    <execution> 
     <id>copy-resources</id> 
     <!-- here the phase you need --> 
     <phase>validate</phase> 
     <goals> 
     <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
     <outputDirectory> 
      ${project.build.directory}/${project.build.finalName}/lib 
     </outputDirectory> 
     <resources>   
      <resource> 
      <directory>${SOME_LIB}</directory> 
      </resource> 
     </resources>    
     </configuration>      
    </execution> 
    </executions> 
</plugin> 
+0

你的意思是说一个资源'a.txt'应该到'target/folderA/lib /'和另一个资源'b.png'到'target/folderB/lib /'?还是应该将两个/所有资源都分配到两个地方? – maba

+0

所有资源到两个位置... target1/folderA/lib以及target2/folderB/lib – Aditya

回答

0

outputDirectories是java.io.File的类型,所以基于该插件,你就必须配置2个处决。

可惜它不是设计来处理

<outputDirectories> 
    <outputDirectory>1</outputDirectory> 
    <outputDirectory>2</outputDirectory> 
</outputDirectories> 
+0

我试过两次执行,但只有文件只反映在最后一个位置。 – Aditya

1

我会用<resources/>标签<build/>块内代替。

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <targetPath>${project.build.directory}/txt</targetPath> 
      <includes> 
       <include>*.txt</include> 
      </includes> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
      <targetPath>${project.build.directory}/png</targetPath> 
      <includes> 
       <include>*.png</include> 
      </includes> 
     </resource> 
     <resource> 
      <directory>${SOME_LIB}</directory> 
      <targetPath>${project.build.directory}/lib</targetPath> 
      <includes> 
       <include>*.dll</include> 
      </includes> 
     </resource> 
    </resources> 
</build> 

这样您就可以将不同的文件分类到不同的目标路径。


对于您的具体问题,这会工作:

<build> 
    <resources> 
     <resource> 
      <directory>${SOME_LIB}</directory> 
      <targetPath>${project.build.directory}/${project.build.finalName}/lib</targetPath> 
     </resource> 
     <resource> 
      <directory>${SOME_LIB}</directory> 
      <targetPath>${project.build.directory}/${project.build.finalName}/WEB-INF</targetPath> 
    </resources> 
</build> 

的资源将被复制到目标BOTH目录,就像你想要的。

+0

但是我可以有相同的资源在不同的目标中翻倍吗? – Aditya

+0

@Aditya是的,你可以!看到我的第二个例子。 – maba

+0

非常感谢maba,这似乎工作。 – Aditya

相关问题