Project를 하다보니 연달아 다른 프로젝트를 컴파일 해야 할 문제가 생긴다.
이때 사용하면 좋을 Batch compile 방법(using maven)
First. making a parent project and modify pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sds.smb.SmbTotalCompile</groupId> <artifactId>SmbTotalCompile</artifactId> <version>1.0</version> <packaging>pom</packaging> <modules> <module>../../../Perforce/MESSANGING/[SMB_Prj]/[DEV]/EMUL</module> <module>../../../Perforce/MESSANGING/[SMB_Prj]/[DEV]/EMUL_LongRun</module> </modules>
</project> |
<module>에는 artifactId가 아닌 실제 compile 할 module의 경로를 써줘야 한다.
같은 path 혹은 하위 module인 경우, artifactId를 써줘도 된다.
Second. modify child module project pom file
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sds.smb.sa.emul</groupId> <artifactId>sa_fieldtest</artifactId> <version>1.5.0</version>
<parent> <groupId>com.sds.smb.SmbTotalCompile</groupId> <artifactId>SmbTotalCompile</artifactId> <version>1.0</version> <relativePath>../../../../../../Source/workspace/TotalCompile/pom.xml</relativePath> </parent>
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <org.springframework-version>3.0.5.RELEASE</org.springframework-version> <org.slf4j-version>1.5.10</org.slf4j-version> <java-version>1.6</java-version> </properties> <build> ...
</build>
</project> |
child module에서 parent module의 pom.xml 경로를 적어준다.
절대 경로를 적는 경우. pom.xml에서 error를 발생한다.. 이유는 잘 모르지만.
상대경로로 변경하니까. 잘 된다..
위와 같이 pom파일을 수정후 parent module을 maven build 하면 child module 까지 잘 동작했다.