웹 개발/Spring Framework

[Spring] war에 test class가 포함된다?(war에서 test class 빼는 법)

희랍인 조르바 2019. 5. 8. 23:14

war를 묶을 때(packaging) test class가 포함되어 컴파일 된다면?

다른 신입분의 war를 받아서 풀어볼 일이 있었는데 컴파일된 테스트 클래스가 포함되어 있었다. 어 왜? 테스트 클래스가 어떻게 포함되어 있지?


난 이제까지 war를 묶으면 자동으로 테스트 클래스가 빠지는 줄 알았다. 실 운영 서버에는 컴파일된 테스트 클래스는 필요없으니까 말이다. war를 묶을 때 테스트 클래스를 포함할 수도, 제외할 수 있다는 걸 이번에 처음 알았다.(그외에도 멀티 프로젝트 또는 다른 디렉토리를 포함하는) 이렇게 어쩌다보니 하나 배웠다. 컴파일된 테스트 클래스가 war에 포함되더라도 그 테스트 클래스를 읽을 일이 없으니 괜찮을 수도 있지만 왠지 모를 찝찝함 + 굳이 필요없는 파일 이 들어감 때문에 해결방법을 찾아보았다.


  • 프로젝트 우클릭해서 properties로 들어간다.

 

  • Deployment Assembly에서 소스탭으로 간다.
    • 여기서 Deployment Assembly란?
      • 리소스와 디펜던시를 유연하게 애플리케이션에 매핑시켜준다.
      • 소스에 있는 리소스와 디펜던시를 배포되는 경로로 매핑
      • 참고할만한 곳 : 이클립스 Deployment Assembly에 대해서

 

  • /src/test/java, /src/test/resources 처럼 test 디렉토리 경로가 있을 것인데, 이것을 삭제해주어야 한다.
    • war가 묶일 때 Deployment Assembly 설정에 맞춰 컴파일되는 것으로 보인다.
    • 그래서 실제 test의 소스 경로에 파일들이 컴파일되지 않도록 삭제해주는 것.


  • 위의 방법을 수행한 뒤 war 묶고 풀어서 확인해보면 test class는 빠지고 main 루트 밑의 소스만 컴파일된 것을 확인할 수 있다.