2015-07-20 61 views
1

我有一个parent maven pom和一个child pom。我必须在parent pom之后但在child pom之前做一些复制目录。我怎样才能做到这一点?如何使用Maven将文件和目录复制为特定位置的后期构建或预构建?

+0

您是否尝试过某些东西?或者类似的应该改进的东西?如果我们有一些我们可以开始的事情,使我们更容易,而不必从头开始。 – ndsmyter

+0

我还没有尝试过,但发现这里有东西(http://stackoverflow.com/questions/586202/best-practices-for-copying-files-with-maven),它说可以完成复制。现在搜索如何执行构建任务之前或之后的任务。 – Jeevan

回答

1

Maven定义了一个生命周期列表,当您告诉Maven构建您的项目时,它将按顺序执行。有关这些阶段的有序列表,请参阅Lifecycles Reference

如果运行

mvn clean test 

Maven运行所有的生命周期直至并包括test

假设你有一个多模块Maven项目和子模块需要复制由父模块生成的资源运行其测试之前,您可以将您的孩子模块中使用maven-resources-plugin并将其绑定到generate-resources阶段:

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>copy-resources-from-parent</id> 
      <phase>generate-resources</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.build.directory}/generated-resources 
       </outputDirectory> 
       <resources> 
        <resource> 
         <directory>../generated-resources</directory> 
        </resource> 
       </resources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

generate-resources阶段在test阶段之前执行。所以,如果你在你父母模块的目录中运行

mvn clean test 

,这一切从<parent>/generated-resources父模块追赶之前复制到<child>/target/generated-resources子模块运行的测试。

+0

我们是否需要把它放在Child POM或Parent POM中? – Jeevan

+0

该片段需要在您的孩子pom中。我相应地更新了我的答案。 – hzpz

+0

如果Child POM,如何使它成为预构建或后构建? – Jeevan

相关问题