2011-01-04 4 views
11

누구나 변경 방법을 알고 있습니까?surefire-plugin으로로드 할 클래스 경로의 위치 변경 순서

나는

target/test-classes ... target/classes .... maven dependencies 

에서

target/test-classes ... maven dependencies .... target/classes 

그것은이 확실한 - 플러그인 확실한 - 플러그인이 포함 /에서/목표/수업 자료를 제외 할 수 없습니다 때문입니다 feature request

관련을 의미한다. .. <testResources> 요소를 통해/대상/테스트 클래스가 아닌/대상/클래스에만 영향을 줄 수있는 리소스를 포함/제외 할 수 있습니다

은 모든 것이 확실한 - 플러그인 여기에 발생합니다

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

이것은 잘못된 문제를 해결하려고하는 것처럼 냄새가납니다. –

+0

@Sean Patrick Floyed JIRA 문제, 특히 내 의견 3 개를 읽으면 나는 그럴만한 이유가 있습니다 – lisak

+0

@ 당신의 의견은 이해가가는 것처럼 보이지만 냄새가 남아 있습니다 : 당신이하려는 것을 달성하기위한 더 좋은 방법이 있어야합니다. –

답변

1

하는 별도의 프로젝트에서 테스트를 고려하십시오. 일반적으로 Maven Way와 충돌하는 프로젝트가있을 때 그 해결책이됩니다.

0

귀하의 기능 요청 링크에서 알 수있는 것은 src/main/resources/config.xml 일부이며 테스트에 사용하려는 config.xml도 포함되어있는 것입니다. 그게 맞습니까? 이런 경우

은, 당신이 할 수있는 것은 src/config/config.xml처럼, 당신의 다른 장소에 src/main/resources/config.xml (안 자원 디렉토리)를 이동하는 것하고는 war 또는 jar 플러그인 설정을 설정하여 최종 JAR/WAR에 포함.

이렇게하면 클래스 패스에 없기 때문에 테스트 결과 config.xml이 종속성에서 확인되지만 src/config/config.xml은 표시되지 않습니다.