2012-04-20 136 views
0

EDIT停止Maven的antrun-插件:解决 我曾在我的POM两次配置吧..如何从运行测试

我设立在行家生产瞩目。为了复制正确的production.properties文件并删除标准文件,我使用了maven-antrun-plugin。

但我不想运行任何测试。由于某种原因,这个插件会尝试运行一些不起作用的canoo-web-tests(并且因为它们从未被使用而不应该工作)。

关于如何让antrun插件只能复制文件的任何想法?

这里是antrun代码:

    <plugin> 
        <artifactId>maven-antrun-plugin</artifactId> 
        <executions> 
         <execution> 
          <phase>package</phase> 
          <goals> 
           <goal>run</goal> 
          </goals> 
          <configuration> 
           <tasks> 
            <delete file="${project.build.outputDirectory}/properties/externalResources.properties"/> 
            <delete file="${project.build.outputDirectory}/properties/externalResources.prod.properties"/> 
            <copy file="src/main/resources/properties/externalResources.prod.properties" 
              tofile="${project.build.outputDirectory}/properties/externalResources.properties"/> 
           </tasks> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 

,这里是错误显示它试图做一些测试:是一个堆栈跟踪显示,它试图读取Web的

[INFO] Executing tasks 
[delete] Deleting: C:\xxx\target\classes\properties\externalResources.properties 
[delete] Deleting: C:\xxx\target\classes\properties\externalResources.prod.properties 
[copy] Copying 1 file to C:\xxx\target\classes\properties 
Trying to override old definition of task retry 
[echo] Testing 'XXX-1.2.0' with 
[echo]                  locale 'no' 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 

然后tests.xml,并且由于该文件有错误,构建失败。

+0

也许跳过测试将有助于:http://maven.apache.org/plugins/maven-surefire-plugin/examples/skipping-test.html – 2012-04-20 12:21:02

+0

我想通了。我已经配置它在早些时候测试..愚蠢的我.. – user829237 2012-04-20 12:30:45

回答

0

听起来您需要根据不同的配置创建不同的工件,并且可以通过使用适当的Maven配置来实现单个模块。你可能会喜欢这样的情况:

. 
|-- pom.xml 
`-- src 
    |-- main 
    | |-- java 
    | |-- resources 
    | |-- environment 
    | | |-- test 
    | | | `-- database.properties 
    | | |-- qa 
    | | | `-- database.properties 
    | | `-- production 
    | |  `-- database.properties 
    | `-- webapp 

这是一个网络应用的例子,但将努力像罐子,耳朵等任何神器另外你需要在你的POM中不同领域的配置:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>test</id> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     <configuration> 
      <descriptors> 
      <descriptor>${project.basedir}/src/main/assembly/test.xml</descriptor> 
      </descriptors> 
     </configuration> 
     </execution> 
     <execution> 
     <id>qa</id> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     <configuration> 
      <descriptors> 
      <descriptor>${project.basedir}/src/main/assembly/qa.xml</descriptor> 
      </descriptors> 
     </configuration> 
     </execution> 
     <execution> 
     <id>production</id> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     <configuration> 
      <descriptors> 
      <descriptor>${project.basedir}/src/main/assembly/production.xml</descriptor> 
      </descriptors> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

而每一次的描述符包含相应的文件夹:

<id>test</id> 
    <formats> 
    <format>war</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
    <dependencySet> 
     <unpack>true</unpack> 
     <useProjectArtifact>true</useProjectArtifact> 
    </dependencySet> 
    </dependencySets> 
    <fileSets> 
    <fileSet> 
     <outputDirectory>WEB-INF</outputDirectory> 
     <directory>${basedir}/src/main/environment/test/</directory> 
     <includes> 
     <include>**</include> 
     </includes> 
    </fileSet> 
    </fileSets> 
</assembly> 

这将导致行家MVN清洁套装的一个简单的运行,就会产生不同的工件(CLA与为每个环境。详细的解释可以在here找到。