maven-surefire가 안본사이 버전업이 많이 되었다. 

  1. The test-classes directory
  2. The classes directory
  3. The project dependencies
  4. Additional classpath elements
surefire가 참조하는 classpath 순서이다. 

surefire가 동작 할때 target/surefire 안에 tmp 블라블라  파일이 2개가 생기는데
그중에 classpath가 정리되어있는 파일이 있다. surefire가 동작할때 이 파일을 매개변수로 받는다.
** 빌드가 완료되면 삭제되므로 주의.

우리는 살다보면 jar를  loading 해서 jar안에 resource 파일에 접근하려는 실수를 하게 된다.
open소스가 file경로를 요구하면 답이 없다..

그럴땐 surefire와 maven-dependency-plugin 의 콜라보로 surefire에서 classes classpath로 참조하게 할수 있다.

http://maven.apache.org/surefire/maven-surefire-plugin/examples/configuring-classpath.html

<plugin>

<artifactId>maven-surefire-plugin</artifactId>

<version>2.17</version>

<configuration>

        <systemProperties>

          <property>

            <name>build.db</name>

            <value>${build.db}</value>

          </property>

        </systemProperties>

<useSystemClassLoader>true</useSystemClassLoader>

<argLine>-Xms256m -Xmx512m -XX:MaxPermSize=128m -Dfile.encoding=UTF-8</argLine>

<includes>

<include>**/AllTests.java</include> <!-- AllTest.java -->

</includes>

<properties>

<property>

<name>listener</name>

<value>spectra.ee.test.MyRunListener</value>

</property>

</properties>

        <additionalClasspathElements>

            <additionalClasspathElement>${basedir}classes경로</additionalClasspathElement>

        </additionalClasspathElements>

        <classpathDependencyExcludes>

            <classpathDependencyExcludes>class디펜던시</classpathDependencyExcludes>

        </classpathDependencyExcludes>

</configuration>

jar 디펜던시를 제거하고 classes 디렉토리를 추가하는 방법.

Posted by 마법수정화살
,