지난 번 maven 로컬 저장소에 jar 파일 및 jar source 파일 배포 글은 Windows 환경에서 개발 환경을 세팅하고 jar 파일에 대한 의존 관계를 추가하는 부분을 다루었다. 개인적으로 진행하는 프로젝트가 하나 있는데 원격 저장소를 설치하기는 뭐해서 로컬 저장소에 maven 로컬 저장소에 jar 파일 및 jar source 파일 배포 글에서 다룬 방법으로 jar 파일을 관리하고 있다.

오늘 주말이고 해서 오랜만에 개인 프로젝트나 진행하려고 로컬 저장소에 jar 파일을 배포하고 기능을 추가하려고 했다. 그런데 집의 개발 PC는 리눅스이다. Windows 환경에서 만들었던 bat 파일을 sh 파일로 만든 후 다음과 같이 call 명령을 제거하고 실행했다.

mvn install:install-file  -Dfile=org.eclipse.mylyn.wikitext.core_1.7.0.I20120625-0903.jar -Dsources=org.eclipse.mylyn.wikitext.core_1.7.0.I20120625-0903-source.jar -DgroupId=org.eclipse.mylyn.wikitext -DartifactId=core -Dversion=1.7.0 -Dpackaging=jar

mvn install:install-file  -Dfile=org.eclipse.mylyn.wikitext.confluence.core_1.7.0.I20120625-0903.jar -Dsources=org.eclipse.mylyn.wikitext.confluence.core_1.7.0.I20120625-0903-source.jar -DgroupId=org.eclipse.mylyn.wikitext -DartifactId=confluence -Dversion=1.7.0 -Dpackaging=jar

로컬 저장소에 jar 파일 배포는 정상적으로 잘 되었다. jar 파일은 core와 confluence 두개이다. 그런데 명령을 실행하는 중에 다음과 같이 메시지가 보였지만 jar 파일이 로컬 저장소에 배포가 잘 되었기 때문에 무시하고 넘어갔다.

./deploy-lib.sh: 줄 2: $'\r': 명령어를 찾을 수 없음

Windows 파일을 그대로 리눅스로 옮기다보니 \r을 명령으로 인식하는구나 정도로 생각했다. 그리고 프로젝트에서 "mvn eclipse:clean eclipse:eclipse"을 실행했다. 그런데 왠 걸 core jar 파일을 찾을 수 없단다. 분명 오타도 없고, Windows 환경에서는 잘 되던 기능이다. 토요일 아침에 가벼운 마음으로 기능 추가하나 하려고 들어왔는데 처음부터 짜증이 밀려온다. 또 다시 해결책을 찾기 위한 삽질이 시작되었다. 이놈의 삽질 인생.

그렇다면 원격 저장소에서 찾을 수도 있으니 강제로 로컬 저장소에서만 찾도록 offline 모드인 "mvn eclipse:clean eclipse:eclipse -offline"을 실행해 본다. 역시나 찾을 수 없단다. 여기 저기 인터넷 검색을 해본다. 그래도 해결책은 보이지 않는다. 그렇게 30분 정도 날려먹고 처음부터 하나씩 다시 시작해 보자로 돌아갔다.

먼저 core와 confluence jar 파일 모두 문제인지 확인하기 위해 core 의존 관계를 제거하고 confluence만 남겨 놓은 후에 빌드를 했다. 어 근데 성공한다. 이건 뭐지. 둘 다 똑같은 방식으로 배포를 했는데... 그리고 core를 배포한 로컬 저장소로 이동해 jar 파일을 확인해 봤다. 그런데 jar 파일 이름이 좀 다르다. jar 파일 이름이 core-1.7.0.jar?로 나온다. 앗 이건 뭐지. 그 순간 앞에서 jar 파일을 로컬 저장소에 배포할 때 봤던 메시지가 떠오른다. 혹시나 그 메시지에서 뭔가 해결책을 찾을 수 있지 않을까? sh 파일에서 \r을 제거하고 다시 배포를 한다. 경고 메시지 없이 정상적으로 배포가 된다. 그리고 "mvn eclipse:clean eclipse:eclipse"을 다시 실행했더니 정상적으로 빌드가 된다. 이런 망할..

아무렇지 않다고 무시한 메시지인데 이 메시지를 무시함으로써 나의 소중한 30분을 날려 먹었다. 그리고 기능을 추가하려는 최초의 목적으로 사라지고 그 시간에 이렇게 글이나 쓰고 있다.

소프트웨어를 개발하다보면 마음 속 뼈저리게 느끼는 몇 가지가 있다.

프로그래밍이라는 것이 해결책을 찾으면 아무 것도 아닌 것들이 해결책을 찾기 전까지는 많은 스트레스와 짜증 유발한다. 하지만 문제의 해결책을 찾았을 때의 짜릿함이 있기 때문에 힘들더라도 계속할 수 있지 않을까라고 생각한다.

기능 추가는 무슨... 토요일 아침 날려 먹었으니 그냥 쉬련다. 주말에는 쉬라는 신의 계시인가보다.