sbt와 Scala 설치가 완료되면 sbt의 설정을 변경한다.
sbt와 Scala 설치 방법은 아래 포스팅을 참고한다.
사용 환경에 따라 차이가 있으므로 필요한 부분만 골라서 설정한다.
sbt의 기본적인 설정을 진행하는 부분과 자체 서명 인증서를 사용하기 위한 설정으로 구분한다.
sbt 설정 변경
터미널에서 sbt를 사용하기 위한 설정을 적용한다.
sbt 저장소 설정 변경
sbt가 사용하는 저장소 경로를 기본 저장소 대신 사용자가 지정한 저장소를 사용하도록 변경한다.
.bashrc에 환경 변수 등록
아래와 같이 .bashrc 파일에 SBT_OPTS 환경 변수를 추가한다.
$ vi ~/.bashrc
export SBT_OPTS="-Dsbt.override.build.repos=true"
# 적용한 환경 변수 적용
$ source ~/.bashrc
sbtopts 파일 수정
sbt의 환경 설정을 관리하는 sbtopts 파일을 생성하고 아래와 같이 입력한다.
$ sudo mkdir /etc/sbt
$ sudo vi /etc/sbt/sbtopts
# 아래 내용 추가하고 :wq로 저장하고 종료
-Dsbt.override.build.repos=true
# 적용한 환경 변수 적용
$ source ~/.bashrc
저장소 경로 파일 생성
sbt가 사용자가 지정한 저장소를 바라보도록 설정했으므로, 사용할 저장소 주소 목록을 생성한다.
다음과 같이 ~/.sbt/repositories 파일을 생성한다.
$ vi ~/.sbt/repositories
[repositories]
local
ivy-remote-scalasbt: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/,
[organization]/[module]/(scala_[scalaVersion]/)
(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
ivy-remote-sbt-ivy: https://scala.jfrog.io/artifactory/ivy-releases,
[organization]/[module]/(scala_[scalaVersion]/)
(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
ivy-remote-typesafe-ivy: https://scala.jfrog.io/ui/native/ivy-releases/,
[organization]/[module]/(scala_[scalaVersion]/)
(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
maven-public: https://저장소주소:포트/repository/maven-public/
maven-release: https://저장소주소:포트/repository/maven-releases/
maven-snapshot: https://저장소주소:포트/repository/maven-snapshots/
프록시 설정
프록시 서버를 경유해야 하는 경우 아래와 같이 프록시 설정을 추가한다.
http.nonProxyHosts, https.nonProxyHosts에 내부 주소를 등록한다.
누락되는 경우 sbt 라이브러리 로딩에 상당한 시간이 소요된다.
$ vi ~/.bashrc
# 아래 내용을 한줄에 입력한다.
export JAVA_OPTS="-Dhttp.proxyHost=프록시서버주소 -Dhttp.proxyPort=프록시서버포트
-Dhttps.proxyHost=프록시서버주소 -Dhttps.proxyPort=프록시서버포트
-Dhttp.nonProxyHosts=*.bearpooh.com|192.168.*|172.*|10.*|localhost|[::1]
-Dhttps.nonProxyHosts=*.bearpooh.com|192.168.*|172.*|10.*|localhost|[::1]"
# 적용한 환경 변수 적용
$ source ~/.bashrc
메모리 설정 변경
sbtopts 파일에 메모리 관련 설정을 추가한다.
thrift build나 unittest에서 OOM(Out of Memory)으로 실패되는 케이스를 방지한다.
$ sudo vi /etc/sbt/sbtopts
# 아래 내용을 추가하고 :wq로 저장하고 종료
-mem 1024
-J-Xmx2G
JVM에 자체서명 인증서 설정
Nexus에 Maven 저장소를 설정하는 방법은 아래 포스팅을 참고한다.
Nexus의 Maven 저장소를 사용하기 위한 자체 서명 인증서 적용 방법은 아래 포스팅을 참고한다.
인증서 다운로드 도구 설치
lessif.com에서 제공하는 InstallCert 파일을 사용하며 자세한 내용은 아래 링크를 참고한다.
InstallCert 파일을 다운로드하고 컴파일한다.
$ curl -O https://gist.githubusercontent.com/lesstif/cd26f57b7cfd2cd55241b20e05b5cd93/raw/InstallCert.java
$ javac InstallCert.java
$ java -cp ./ InstallCert 서버주소 # 또는 서버주소:포트
java -cp 명령으로 인증서를 컴파일하면 jssecacerts 파일이 생성된다.
JVM에 인증서 설정하기
JVM의 신뢰 인증서 목록에 에 자체 서명 인증서를 추가한다.
또한 해당 인증서를 생성하는데 사용한 rootca 인증서를 추가한다.
JVM의 cacerts 경로는 JDK 1.8 버전 기준이다.
기본적인 방법은 아래 문서를 참고한다.
# jssecacerts 파일을 사용하고 비밀번호는 changeit이다.
$ keytool -exportcert -keystore jssecacerts -storepass changeit \
-file output.cert -alias 서버주소-1
# 기존에 등록된 별칭 (alias)가 있으면 삭제한다.
$ sudo keytool -delete -alias 서버주소-1 -keystore ${JAVA_HOME}/jre/lib/security/cacerts \
-storepass changeit
# 서버 인증서 등록
$ sudo keytool -importcert -trustcacerts -keystore ${JAVA_HOME}/jre/lib/security/cacerts \
-storepass changeit -file output.cert -alias 서버주소-1
# rootca 인증서 등록
$ sudo keytool -importcert -trustcacerts -keystore ${JAVA_HOME}/jre/lib/security/cacerts \
-storepass changeit -file 파일경로/rootca.crt -alias 서버주소
sbt의 인증서 설정 변경
JVM의 trustStore 설정 추가
sbt 설정 파일인 sbtopts에 JVM의 trustStore 옵션을 추가한다.
$ sudo vi /etc/sbt/sbtopts
# 마지막 줄에 추가하고 :wq로 저장하고 종료
-Djavax.net.ssl.trustStore=$JAVA_HOME/jre/lib/security/cacerts
-Djavax.net.ssl.trustStorePassword=changeit
SSL 인증서 검증 미사용 설정
자체 서명 인증서를 사용하는 경우 sbtopts 파일에 인증서 검증 옵션을 해제하는 설정을 추가한다.
$ sudo vi /etc/sbt/sbtopts
# 마지막 줄에 추가하고 :wq로 저장하고 종료
-Dmaven.wagon.http.ssl.insecure = true
-Dmaven.wagon.http.ssl.allowall = true
-Dmaven.wagon.http.ssl.ignore.validity.dates = true
만약 위의 wagon 옵션이 동작하지 않으면 환경변수로 등록한다.
$ vi ~/.bashrc
# 아래 내용을 한줄에 입력한다.
export SBT_OPTS="-Dsbt.override.build.repos=true
-Dmaven.wagon.https.ssl.insecure=true -Dmaven.wagon.https.ssl.allowall=true
-Dmaven.wagon.http.ssl.ignore.validity.dates=true"
# 적용한 환경 변수 적용
$ source ~/.bashrc
wagon 설정 관련 내용은 아래 문서를 참고한다.
'::: IT인터넷 :::' 카테고리의 다른 글
윈도우 WSL 환경에서 IntelliJ 사용하기 (2) | 2023.07.27 |
---|---|
Ubuntu 22.04에 IntelliJ 설치하기 (106) | 2023.07.24 |
sbt 1.9.0 버전과 Scala 2.12.18 설치하기 (0) | 2023.07.17 |
Maven 저장소에 사용할 Nexus 서버의 자체 서명 인증서 교체 (36) | 2023.07.13 |
Nexus에 Maven 저장소 설정 (for Scala Application) (101) | 2023.07.10 |