Java Maven在测试后删除资源
我最近读到,在类路径中可以有一个Java Maven在测试后删除资源,java,maven,maven-plugin,logback,maven-resources-plugin,Java,Maven,Maven Plugin,Logback,Maven Resources Plugin,我最近读到,在类路径中可以有一个logback.xml和一个logback test.xml,其中测试文件具有更高的优先级 Logback尝试在类路径中查找名为Logback-test.xml的文件 如果没有找到这样的文件,logback会尝试在类路径中找到名为logback.groovy的文件 如果没有找到这样的文件,它将检查类路径中的logback.xml文件 因此,我认为在测试时让日志记录在控制台中进行,并在使用maven构建后将日志记录到一个文件(无需手动更改输出)是一个好主意。
logback.xml
和一个logback test.xml
,其中测试文件具有更高的优先级
maven资源插件
,它可以
一些资源。我在插件中指定了如下测试文件(如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>
<properties>
<webdir>WEB-INF/classes</webdir>
</properties>
org.apache.maven.plugins
maven资源插件
src/main/resources
试验/**
*试验*
这很好,但有一个问题。我确实需要访问*test*
文件(是的,也是logback test.xml
,因此我不能在测试期间仅排除它而不排除通配符*test*
)和test/**
目录。我只想在测试完成后排除/删除它们。使用此配置,将永远不会复制排除的资源,但我希望先复制它们(使测试可以访问它们),然后(在测试成功运行后)删除它们
我怎样才能做到这一点?我一直在寻找“maven delete plugin”,但找不到任何插件。事情要简单得多。
Maven为打包的应用程序提供单独的源/资源,并为执行测试提供源/资源。
只需在
src/test/resources
文件夹中移动logbacktest.xml
。
然后将logback.xml
放在src/main/resources
中
通过这种方式,logbacktest.xml
将在构建测试期间可用。由于该文件位于
src/test/resources
,因此它永远不会包含在您的应用程序中。虽然打包的应用程序将只包含并使用
src/main/resources
中定义的logback.xml
,但我找到了自己的解决方案
删除maven资源插件
。相反,根据您的打包,使用maven-jar-plugin
或maven-war-plugin
,它负责构建jar
或war
文件(并在测试后运行)
罐子
好的,很高兴知道。但是,当测试文件仅位于
resources/test/
中时,它们在正常运行时不可用。我希望应用程序测试使用与“正常”程序运行完全相同的资源,但是当我使用maven构建时,我不希望任何测试文件出现在jar中。或者我在这里根本上做错了什么?我感觉你所谓的“测试”不是src/test/java
中的单元测试,而是src/main/java
中的手动测试。是这样吗?不,我的测试是在src/test/java/[package]/[Name]ApplicationTests.java
中进行的。澄清:我在src/test/java/[package]/[Name]ApplicationTests.java
中有自动测试,但有时我也会手动测试。这是件坏事吗?
<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>
<properties>
<webdir>WEB-INF/classes</webdir>
</properties>