[Maven] Exec Maven Plugin 사용하여 자바 프로그램 실행하기
참조: http://www.vineetmanohar.com/2009/11/02/3-ways-to-run-java-main-from-maven/
이 플러그인을 사용하기 전까지 주로 사용하던 방법은 main() 메서드를 가지고 있는 자바 파일을 만들지 않고 그냥 테스트 클래스를 만드는 겁니다. 그러면 mvn test를 실행할 때 자동으로 실행되죠ㅋㅋ. 하지만 이 방법은 왠지 편법 같아서 main() 메서드를 가지고 있는 클래스를 실행해볼까 해서 찾아봤더니 exec 플러그인이 있더군요.
http://mojo.codehaus.org/exec-maven-plugin/index.html
1. pom.xml에 플러그인 추가하기
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
</plugin>
...
</plugins>
2. goal
이 플러그인이 제공하는 goal은 세 가지가 있습니다.
exec:exec 외부 프로그램 실행하기
exec:help exec 플러그인 도움말 보기
exec:java 현재 VM에 있는 메인 클래스 실행하기
3. 사용하기
흠.. compile은 별도로 해줘야 하기 때문에 mvn:compile 정도를 한 뒤 mvn:java -Dexec.mainClass="실행할 클래스명"을 할 수도 있지만... 불편하죠;
mvn test만 사용해서 실행하도록 executions를 이용해서 test Phase에 java Goal을 끼워줍니다. 즉 pom.xml에 플러그인 설정을 다음과 같이 해줍니다.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>whiteship.backup.BackupRunner</mainClass>
</configuration>
</execution>
</executions>
</plugin>
그럼 이제 mvn test을 실행하는 .bat 파일 만들어 놓고 윈도우의 '예약작업'으로 주기적으로 실행하도록 해놓으면 백업 배치 끝!! (리눅스라면 cron으로..블라 블라)
ps1: 어떻게보면 이 방법이 자바 애플리케이션을 서버처럼 띄워서 스케줄링하는 것 보다 시스템도 효율적으로 쓰는 것 같고 간편하네요.
ps2: 특히 윈도우의 예약작업은 리눅스의 cron처럼 공부하지 않아도 쓸 수 있으니.. 이럴 땐 윈도우도 좋네요.