Intellij에서 실행/테스트 할 때 HOCON에 임의의 환경 변수를 전달하고 싶습니다.

3379 단어 IntelliJScalasbt

상황



application.conf
detabesu.username = john.doe
detabesu.password = ${PASSWORD}

다음과 같은 이유로 일부 설정 값을 환경 변수에서 HOCON을 통해 프로그램에 전달합니다.
  • 실행 환경마다 다른 값을 사용하고 싶습니다
  • 암호를 설정 파일에 쓰지 않으려면

  • 문제



    sbt 경유나 패키징 후에 설정치를 건네줄 경우는 문제 없지만, Intellij로부터 직접 실행하거나 테스트를 실행하는 경우는 어떻게 하면 좋을지 모른다.

    해결책



    Intellij 실행 설정 (Run / Debug Configurations)에서 환경 변수 전달 (권장)





    위와 같이 환경 변수용 입력 양식이 준비되어 있는 경우에는 거기에 입력하면 된다.

    sbt로부터 실행하는 경우 등은 환경 변수용의 폼이 준비되어 있지 않다. 이러한 경우는 VM parameters를 사용한다.

    lightbend/config: configuration library for JVM languages ​​using HOCON files

    users can override the config with Java system properties, java -Dmyapp.foo.bar=10
    와 같이 쓰여진 대로 Java의 시스템 프로퍼티를 사용하는 것으로 HOCON에 임의의 값을 건네줄 수가 1



    이미지와 같이 -D環境変数名=値 의 형식으로 기술한다.

    Intellij 자체에 환경 변수 전달 (비추천)



    별로 추천할 수 없다. 라는 것은 여기서 설정한 환경 변수는 열려 있는 프로젝트 등에 관계없이 일률 설정되어 버리기 때문에, 다른 프로젝트에서 같은 환경 변수명을 사용해 다른 값을 설정하고 싶은 경우 등에 혼란이 일어나기 쉽기 때문.

    Linux의 경우



    Intellij의 기동 커맨드 전에 환경 변수를 건네주면 된다.
    PASSWORD=abc idea&
    

    우분투의 launcher등에 등록하고 있는 경우, 우선 .desktop의 장소를 특정한다.
    locate intellij-idea-community_intellij-idea-community.desktop
    

    그 후 .desktop 파일의 Exec 부분을 다시 쓰고 모든 환경 변수를 전달합니다. .

    intellij-idea-community_intellij-idea-community.desktop
    [Desktop Entry]
    Type=Application
    Name=IntelliJ IDEA Community Edition
    Exec=env PASSWORD=abc /snap/bin/intellij-idea-community %f
    Terminal=false
    StartupWMClass=jetbrains-idea-ce
    

    MAC의 경우



    Linux와 같지만 .desktop 파일에 해당하는 것은 없고, 그것에 해당하는 launchctl을 사용한 설정 방법은 상당히 번거롭다.
  • Mac에서 환경 변수 (environment variables)를 설정하는 방법 - Qiita

  • Windows의 경우



    TBW



    엄밀히 말하면 환경 변수와 시스템 속성은 다르지만 이번에는 이야기를 단순화하기 위해 혼란스럽게 작성되었습니다.

    좋은 웹페이지 즐겨찾기