May 4th, 2009
maven assembly의 중복 entry 문제

maven assembly pluginjar-with-dependencies descriptor를 주어 사용할 때가 있는데 문제가 있었던거 같은데 그 동안 몰랐다.
최종 결과물에 classes의 내용이 두번씩 들어간다.

이는 dependency를 하나도 정의하지 않은 초간단 maven project에서도 발생한다.

XML:
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3.   <modelVersion>4.0.0</modelVersion>
  4.   <groupId>net.hanjava</groupId>
  5.   <artifactId>simplest</artifactId>
  6.   <packaging>jar</packaging>
  7.   <version>1.0-SNAPSHOT</version>
  8.   <name>simplest</name>
  9.   <url>http://hanjava.net/call-151</url>
  10.   <build>
  11.     <plugins>
  12.       <plugin>
  13.         <artifactId>maven-assembly-plugin</artifactId>
  14.         <configuration>
  15.           <descriptorRefs>
  16.             <descriptorRef>jar-with-dependencies</descriptorRef>
  17.           </descriptorRefs>
  18.         </configuration>
  19.       </plugin>
  20.     </plugins>
  21.   </build>
  22. </project>

zip format내부에 같은 path를 같은 entry를 여러번 넣을 수 있다는 점이 의외다.
해당 이슈는 이미 보고되어있고 assembly plugin 2.2-beta-3에서 수정되었다는데 안되는듯. (수정합니다. 2.2-beta-3에서 잘 됩니다. 제 실수네요.)

대부분의 경우 위 이슈는 실행을 방해하지 않기 때문에 별 문제가 되지 않는다.
하지만 android의 dex로 변환할때 문제가 생긴다. jar내부의 constant pool을 공유하는 dex의 특성때문에 민감하거든.
수제 assembly descriptor를 제공해서 해결.

May 2nd, 2009
봄 운동회

근로자의 날에 운동회해서 못쉬게 만들어 주는 센스.
날씨짱이었삼