Maven在测试后删除资源

时间:2018-03-28 21:08:20

标签: java maven maven-plugin logback maven-resources-plugin

我最近读过你在类路径中可以有一个logback.xml和一个logback-test.xml,其中测试文件具有更高的优先级。

  
      
  1. Logback尝试在类路径中查找名为logback-test.xml的文件。

  2.   
  3. 如果未找到此类文件,则logback会尝试在类路径中查找名为logback.groovy的文件。

  4.   
  5. 如果找不到这样的文件,它会检查类路径中的文件logback.xml。

  6.   

Source

所以我认为在使用maven构建(无需手动更改输出)后测试和登录文件时,让控制台在控制台中进行日志记录会是一个好主意。 我找到了maven-resources-plugin,可以<exclude>一些资源。我在插件中指定了测试文件(如logback-test.xml):

pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>test/**</exclude>
                    <exclude>*test*</exclude>
                </excludes>
            </resource>
        </resources>
    </configuration>
</plugin>

哪个效果很好,但有一个问题。我肯定需要访问*test*文件(是的,也是logback-test.xml,因此在测试期间我不能只排除它而不是通配符*test*)和test/**目录。我只想在测试完成后排除/删除它们。使用此配置,永远不会复制排除的资源,但我希望首先复制它们(使它们可以通过测试访问)然后(在测试成功运行后),删除它们。

我怎样才能做到这一点?我一直在寻找一个“maven delete插件”但找不到任何内容。

2 个答案:

答案 0 :(得分:2)

事情要简单得多 Maven为打包的应用程序分配源/资源,并为执行测试分配源/资源 只需在logback-test.xml文件夹中移动src/test/resources即可。 并将logback.xml放在src/main/resources中。

通过这种方式,logback-test.xml将在您的构建测试期间可用 由于该文件位于src/test/resources,因此它永远不会包含在您的应用程序中 虽然打包的应用程序将仅包含和使用logback.xml中定义的src/main/resources

答案 1 :(得分:0)

我找到了自己的解决方案。

删除function t$ArrayToTArray$<T>(ts$:Observable<T>[]):Observable<T[]>{ return Observable.combineLatest(ts$); } 。相反,根据您的打包,使用负责构建maven-resource-pluginmaven-jar-plugin文件的maven-war-pluginjar(并在测试后稍后运行)。

war

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.0.2</version>
    <configuration>
        <excludes>
            <exclude>test/**</exclude>
            <exclude>*test*</exclude>
        </excludes>
    </configuration>
</plugin>

其中<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.2.0</version> <configuration> <packagingExcludes>${webdir}/test/**,${webdir}/*test*</packagingExcludes> </configuration> </plugin> 是构建的war文件中类路径根目录的路径。您可以将其添加到webdir标记(直接位于<properties>标记下)。就我而言,它是<project>

WEB-INF/classes

pom.xml