【问题标题】:How to create a subdirectory within target with Maven2如何使用 Maven2 在目标内创建子目录
【发布时间】:2011-03-22 01:22:15
【问题描述】:

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

问题是,如果我将插件的保存路径指定为(例如):${basedir}/target/xml,插件会抛出 FileNotFoundException。我希望文件位于 /target 的原因是在调用 mvn clean 时清理目录。

有什么建议吗?

【问题讨论】:

    标签: maven-2 pom.xml


    【解决方案1】:

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

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

    编辑: 好的,那么你必须使用下面的插件定义来 uglify 你的 pom,它将绑定到 generate-test-resources phase,并调用 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>
    

    【讨论】:

    • 我正在使用 maven2 插件进行测试(soapui),所以恐怕在我的情况下不起作用(测试用​​例是在插件加载和运行的soapui项目中指定的在集成测试阶段)。将xml文件保存在目标目录中是最简单的,但它会很乱,所以我宁愿在目标中创建一个名为“xml”的子目录,以便将xml文件保存在那里。
    • 谢谢。它确实很丑,但它确实有用——我想我可以在目标目录之外创建输出目录,但是我必须定义 maven clean 插件,以便它清理响应 XML,呵呵。接受。
    • 谢谢,第一个解决方案(将其放入测试中)对我有用。为此必须使用 ant 插件似乎很疯狂(为什么 maven 不这样做?)并且测试方法是最少的麻烦。谢谢!
    猜你喜欢
    • 2010-10-20
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    相关资源
    最近更新 更多