Ответ 1
Рассмотрите возможность тестирования в отдельном проекте. В общем, когда у вас есть проект, который конфликтует с Maven Way, решение - разделить его.
Кто-нибудь знает, как его изменить?
Я имею в виду от
target/test-classes ... target/classes .... maven dependencies
к
target/test-classes ... maven dependencies .... target/classes
Это относится к этому запросу функции
Это потому, что surefire-plugin не может включать/исключать ресурсы из /target/classes... он может включать/исключать ресурсы только через элемент <testResources>
, который может влиять только на /target/test -classes, not/target/classes
Все происходит здесь, в Surefire-plugin:
File projectClassesDirectory = new File( project.getBuild().getOutputDirectory() );
if ( !projectClassesDirectory.equals( classesDirectory ) )
{
int indexToReplace = classpathElements.indexOf( project.getBuild().getOutputDirectory() );
if ( indexToReplace != -1 )
{
classpathElements.remove( indexToReplace );
classpathElements.add( indexToReplace, classesDirectory.getAbsolutePath() );
}
else
{
classpathElements.add( 1, classesDirectory.getAbsolutePath() );
}
}
File projectTestClassesDirectory = new File( project.getBuild().getTestOutputDirectory() );
if ( !projectTestClassesDirectory.equals( testClassesDirectory ) )
{
int indexToReplace = classpathElements.indexOf( project.getBuild().getTestOutputDirectory() );
if ( indexToReplace != -1 )
{
classpathElements.remove( indexToReplace );
classpathElements.add( indexToReplace, testClassesDirectory.getAbsolutePath() );
}
else
{
classpathElements.add( 0, testClassesDirectory.getAbsolutePath() );
}
}
getLog().debug( "Test Classpath :" );
for ( Iterator i = classpathElements.iterator(); i.hasNext(); )
{
String classpathElement = (String) i.next();
getLog().debug( " " + classpathElement );
surefireBooter.addClassPathUrl( classpathElement );
}
Рассмотрите возможность тестирования в отдельном проекте. В общем, когда у вас есть проект, который конфликтует с Maven Way, решение - разделить его.
То, что я понял из вашей ссылки на запрос функции, состоит в том, что у вас есть src/main/resources/config.xml
и зависимость, которая также содержит config.xml
, который вы хотите использовать в своих тестах. Правильно ли это?
Если это так, вы можете переместить ваш src/main/resources/config.xml
в другое место (а не в каталог ресурса), например src/config/config.xml
, и включить его в свой последний JAR/WAR, установив war или jar plugin config.
Таким образом, ваши тесты будут видеть config.xml
из вашей зависимости, но не ваш src/config/config.xml
, поскольку он не находится в пути к классам.