Изменение порядка местоположений на пути к классам, которое должно быть загружено верным плагином

Кто-нибудь знает, как его изменить?

Я имею в виду от

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 );
}

Ответ 1

Рассмотрите возможность тестирования в отдельном проекте. В общем, когда у вас есть проект, который конфликтует с Maven Way, решение - разделить его.

Ответ 2

То, что я понял из вашей ссылки на запрос функции, состоит в том, что у вас есть 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, поскольку он не находится в пути к классам.