sbt 로 빌드된 Github 프로젝트를 사용해야 하는 상황
처음 SBT를 사용하는 나로선 이게 뭔가 싶었지만,
maven 과 gradle 등의 빌드 도구에 구타를 당해봐서 당황하지 않고 설치를 시작했다
sbt는 홈페이지도 아주 simple 했다. (?homepage?)이름값 하는구나
버전 선택부터 문제였다. 컴퓨터를 만지다 보면 사람이 보수적으로 변한다
최신이 좋다는 머글들을 한심하게 바라보는 개발자의 마음이랄까
하지만 sbt 를 모르기 때문에 최신으로 받았다 1.0.2.
설치는 매우 순조롭게 진행되었다
자바로 개발되었는지 jar 파일로 설치파일을 실행 가능하다
리눅스의 경우 홈페이지에서 apt-get 으로 설치하라고 소개가 되어있다.
echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
sudo apt-get update
sudo apt-get install sbt
빨간모자 계열은 아래와 같이
curl https://bintray.com/sbt/rpm/rpm | sudo tee /etc/yum.repos.d/bintray-sbt-rpm.repo
sudo yum install sbt
물론 MacOS 에서는 brew brew Homebrew
brew install sbt@1
하지만 문제는 설치를 다 마치고, 바로 sbt 프로젝트를 빌드를 시도하면서 시작되었다.
프로젝트 README 에는 간단하게 "sbt assembly" 를 하면 자동으로 빌드가 될 거고,
target 폴더에 뿅 하고 jar 가 생길거라고..
맞다. 간단하게 찾아보니 sbt 는
플러그인을 통해 자동으로 복잡한 의존성을 해결해주고 빌드를 도와주는 도구라고 한다
하지만 그 많은 라이브러리와 플러그인이 꾸깃꾸깃 들어있어서 버전이나 서버 문제가 조금이라도 생기면....
그렇게 삽질이 시작되었다. 물론 해결을 했으니 공유해서 누군가는 구원받길 바라며 써본다.
문제발생 :: sbt ~~~~ not found, unresolved dependencies
에러의 첫 모습을 보면 다음과 같이 생겨먹었다
Warning 을 통해 의존성을 못찾겠다고 내뱉는다. (텍스트버전)
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: com.eed3si9n#sbt-assembly;0.14.0: not found
[warn] :: org.scoverage#sbt-scoverage;1.5.0: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
그리곤 바로 이어서 에러를 뱉어준다. 둘 중 먼저 참조하는 녀석을 못찾겠다고.
[error] sbt.librarymanagement.ResolveException: unresolved dependency: com.eed3si9n#sbt-assembly;0.14.0: not found
[error] unresolved dependency: org.scoverage#sbt-scoverage;1.5.0: not found
두 에러를 잡기 위해선 아주 간단한 편집이 필요하다. 사실 어려운 문제는 아니었다.. 에러가 그렇지 뭐
문제해결 :: sbt-assembly not found
먼저 sbt-assembly 의 경우, sbt 프로젝트를 만든 root 의 project 디렉토리를 들어가보면 아무것도 없거나 assembly.sbt 가 있다. 없으면 만들고 있으면 편집 (vim assembly.sbt)
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.5")
위 줄을 추가하거나 수정한다. (버전은 꼭 홈페이지에서 확인하고 수정해야한다)
사실 이 내용이 sbt-assembly github 페이지에 나온다..
github link : https://github.com/sbt/sbt-assembly 내용은 아래와 같다.
Setup :: Using Published Plugin
For sbt 0.13.6+ and sbt 1.0.0-M6, add sbt-assembly as a dependency in project/assembly.sbt:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.5")
For older sbt 0.13.x, see sbt-assembly 0.11.2.
For sbt 0.12, see sbt-assembly 0.9.2.
(You may need to check this project's tags to see what the most recent release is.)
문제해결 :: sbt-scoverage not found
위 sbt-assembly 문제를 해결하고 나서, 바로 같은 방법으로 github 페이지를 찾아봤다.
그렇게 길고 긴 4시간 삽질이 끝을 보였다.
github link : https://github.com/scoverage/sbt-scoverage
가장 쉬운 방법은 project 디렉토리 내 plugin.sbt 를 만들거나 수정한다
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.5.1")
위 줄을 추가하거나 수정한다. (버전은 꼭 홈페이지에서 확인하고 수정해야한다)
하지만 안되는 경우도 있는데, sbt project 버전이 플러그인이나 라이브러리와 맞지 않아서 발생할 수 있다.
발생하는 에러를 따라가서 플러그인이나 라이브러리의 홈페이지에서 명시된 sbt 버전이나 scala 버전을 확인하고 수정하면 된다.
결론
에러를 보면 습관적으로 구글에 복붙하게 되는데, 가끔 기본적인 부분에서 문제가 되는 경우가 있다.
공식 홈페이지나 API Documents 를 먼저 살펴보고, 버전이나 코드 문제가 아닌지 잘 살펴보자.
+ stackoverflow 를 맹신하지 말자...
++ 버전은 항상 변한다는걸 잊지말고...
'문제해결' 카테고리의 다른 글
Gitlab-runner 환경에서 Fabric8 로 Docker 빌드 시 /var/run/docker.sock 쓰지 못하는 에러 (0) | 2019.09.05 |
---|---|
Gitlab-ce Server 이전시 발생 문제와 해결 (backup and restore, pg_dump, version upgrade, 500 error) (0) | 2019.08.20 |