mvn의 assembly 와 비슷한 기능을 가진 플러그인이 있다.
Spring Batch를 하면서 알게 된 건데..
maven-shade-plugin이다. mvn assembly는 파일명이 예쁘지가 않는다..
그러나 maven shade plugin을 활용하면 파일명도 예쁘게 나온다. 더 정확하게 말하면, 파일을 overwrite하기 때문이다.
maven-shade-plugin은 아래와 같이 버전명과 예쁘게 나옵니다.
[INFO] Replacing original artifact with shaded artifact.
[INFO] Replacing E:\sts\springbatch-mssql\target\springbatch-mssql-0.2.jar with
E:\sts\springbatch-mssql\target\springbatch-mssql-0.2-shaded.jar
하지만 제일 중요한 것은 스프링 프로젝트의 경우에는 스프링 설정파일인 applicationContext.xml의 namespace를 찾지 못해서 에러가 발생되는 경우가 종종 발생되기도 한다. 즉 spring lib 안의 dependecy 파일이 동일한 위치에 있다 그래서 META-INF안에 있는 spring.handlers와 spring.schemas 파일을 덮어버리는 일이 있다. 그래서, assembly 을 사용하면 문제가 되어서, 스프링 프로젝트에서는 maven-shade-plugin을 사용하고 있다.
pom.xml 파일의 내용입니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
Spring Batch는 transformer를 추가하고 AppendingTransformer를 사용하는데. 이 이유는 spring 관련 jar를 합치면서 overwrite되지 않고 계속 더해질 수 있도록 한 것이다.
xml에서 선언하는 namespace를 못찾는 것을 방지할 수 있도록 하기 위한 것이다..
* 주석 : Spring Batch Sample 소스에 좋은 것이 많다~
'Web service' 카테고리의 다른 글
Facebook 기술 (0) | 2011.03.16 |
---|---|
FTP command 사용하기 (0) | 2011.03.03 |
tomcat 6.0.31 패치 눈에 띄는것 (0) | 2011.03.02 |
tomcat 6.0.32 중요 패치 내용 (0) | 2011.03.02 |
tomcat 6.0.30 중요 패치 내용 (0) | 2011.03.02 |