Language/Java

[Maven] batch compile (parents)

아르비스 2012. 7. 2. 15:06

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 까지 잘 동작했다.