如何用Maven2在目标中创建一个子目录

如何用Maven2在目标中创建一个子目录

问题描述:

我需要在用maven2编译时在目标目录中创建一个子目录。原因是我正在使用一个插件来响应SOAP请求,并将它们存储在集成测试阶段的/ target/xml中。如何用Maven2在目标中创建一个子目录

问题是,如果我指定插件的savepath(例如):$ {basedir}/target/xml,插件会引发FileNotFoundException。我希望文件在/ target中的原因是,在调用mvn clean时清理目录。

有什么建议吗?

您可以创建测试用例类扩展的通用抽象基类。
将静态初始化程序初始化程序添加到抽象基类,该抽象基类检查目录是否存在,如果不存在,则创建它。

静态初始化块将在第一次加载基类时执行,并且将在测试用例子类中的任何静态初始化块或构造函数之前执行。

编辑: OK,那么你就必须要丑化与下面的插件定义,这将结合生成测试资源phase你的POM,并调用antrun插件创建的目录。

<build> 
    <plugins> 
     ... 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <version>1.4</version> 
     <executions> 
      <execution> 
      <phase>generate-test-resources</phase> 
      <configuration> 

       <tasks> 
       <echo message="Creating test output directory"/> 
       <mkdir dir="./target/xml"/> 
       </tasks> 

      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     ... 
    </plugins> 
    </build> 
+0

我使用maven2的插件做的测试(soapUI的),这样就不会在我的情况下工作,我怕(测试用例将在一个项目的soapUI指定该插件的加载和运行集成测试阶段)。将目标目录中的xml文件保存起来最简单,但它会很麻烦,所以我宁愿在目标中创建一个名为“xml”的子目录,以便将xml文件保存在那里。 – John 2010-07-28 09:40:00

+0

谢谢。它确实是丑陋的,但它有诀窍 - 我想我可以在目标目录之外创建输出目录,但是我必须定义maven clean插件,以便清理响应XML,嘿嘿。公认。 – John 2010-07-28 12:30:35

+0

谢谢,第一个解决方案(把它放在测试中)适用于我。使用ant插件似乎很疯狂(为什么maven不这样做?),而测试方法是最少的麻烦。谢谢! – ksclarke 2013-04-04 22:46:04