2016-09-06 4 views
1

sbt 내의 파일 내용을 읽을 수 있습니까? 사용자 이름 패스 등을 읽는다고 말하십시오.SBT : 디스크에서 변수를 읽을 수 있습니까?

+0

당신은 데이터, 나는 생각이 들어 다른 스칼라 파일을로드 할 수 있습니다 : 예 봐 (프로젝트 어딘가에 정의 된 경우 클래스 AppCredentials 있다고 가정). 나는 그것을하는 법을 기억하지 못한다. 그러나 sbt config의 일부로 여러 파일을 가진 프로젝트를 보았다. –

+0

음 ... 나는 그것을 프로젝트에 포함하고 싶지 않습니다. 프로젝트 바깥에서 어딘가에서 그것을 읽고 싶습니다. '~/.credentials'. – Daniel

답변

3

예, SBT 내부의 파일을 읽을 수 있습니다.

case class AppCredentials(userName: String, pwd: String) // it's better to use Array[Char] for password 
val appCredentials = settingKey[AppCredentials]("The application credentials") 

appCredentials := { 
    val creds = IO.readLines(new File(Path.userHome.absolutePath + "/.credentials")) 
    val (user, pwd) = parseCredentials(creds) 
    AppCredentials(user, pwd) 
} 

name := appCredentials.value.userName 
+0

신속한 답변을 보내 주셔서 감사합니다. "당신이 사례 수업을 가지고 있다고 가정"에 대해 다소 혼란스러워합니다. 사용자 이름과 암호 (두 문자열 모두)를 포함하고 읽어야한다고 가정합니다. 케이스 클래스는 어떻게 생겼을 까? 파일 내용 자체는 어떻습니까? – Daniel

+1

혼란을 드려 죄송합니다. 내 말은, 'case 클래스 AppCredentials (userName : String, password : String)'와 같은 자격 증명을위한 클래스가 있어야한다는 것입니다. 물론, ~ .credentials 파일을 구문 분석해야 콘텐츠에 액세스 할 수 있습니다 (내 편집 참조). – leshkin

+0

또 다른 질문입니다. 왜 우리는'settingKey'를 사용하고 있습니까? 파일을 파싱 한 후 값을 직접 사용하지 않는 이유는 무엇입니까? – Daniel

관련 문제