version.sbt에 정의 된 ThisBuild 설정의 버전 값을 artifactName으로 전달 하시겠습니까?

Play 애플리케이션의 버전을 자동으로 늘리기 위해 sbt 0.13sbt-release 플러그인을 version.sbt사용하므로 다음 줄의 파일 이 있습니다.

version in ThisBuild := "1.0-SNAPSHOT"

또한 환경별로 특정 이름으로 패키지를 준비하기 위해 매핑 아티팩트 이름을 준비합니다.

val main = play.Project(appName, dependencies = appDependencies).
      settings(
        ...
        artifactName := {(sv: ScalaVersion, module: ModuleID, artifact: Artifact) => {
          val suffix = "-" + sys.props.getOrElse("environment","dev") + (if (artifact.classifier.isDefined) "-" + artifact.classifier.get else "")
          artifact.name + "_" + sv.binary + "-" + version + suffix + "." + artifact.extension
        }},
        ...
      )

위의 코드를 평가하면 version.sbt가 1.0-SNAPSHOT로 값을 정의하기 때문에 버전 값이 1.0 (아마도 일종의 기본값)이됩니다. 많은 경우에서 버전을 사용하기 위해 다음과 같은 작업을 수행합니다 ThisBuild.

SomeTask <<= (version in ThisBuild) map { ver => ...
  some ver usage
  ...
}

그러나이 특정 솔루션은 작동하지 않습니다. 누군가 artifactName설정 에서이 특정 값을 사용하는 방법에 대한 예를 제공 할 수 있습니까 ?

나를 도울 또 다른 해결책은이 변수에서 문자열 값을 얻는 것입니다. 덕분에 다음 작업을 수행 할 수 있습니다.

val appVersion := ... // some operation on version in ThisBuild
val main = play.Project(appName, appVersion, dependencies = appDependencies)

생성 된 패키지의 이름을 제공하기 위해 파일에서 version설정 값을 전달하고 싶습니다 .version.sbtartifactName

Jacek Laskowski

나는 sbt 0.13.3-SNAPSHOT으로 작업합니다 .

[sbt-0-13-3]> about
[info] This is sbt 0.13.3-SNAPSHOT
[info] The current project is {file:/Users/jacek/sandbox/so/sbt-0.13.3/}sbt-0-13-3 1.0-build_sbt
[info] The current project is built against Scala 2.11.0-RC3
[info] Available Plugins: sbt.plugins.IvyModule, sbt.plugins.JvmModule, sbt.plugins.GlobalModule, com.typesafe.sbt.SbtGit, com.typesafe.sbt.SbtProguard, growl.GrowlingTests, org.sbtidea.SbtIdeaPlugin, sbtman.Plugin, np.Plugin, com.timushev.sbt.updates.UpdatesPlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.10.3

tl; dr 구성 (version in ThisBuild).value에서 version설정 값이 필요할 때 사용 ThisBuild합니다.

다음 version.sbt 파일이 제공됩니다.

version in ThisBuild := "1.0-version_sbt"

및 다음 build.sbt (참고 (version in ThisBuild).value) :

scalaVersion := "2.11.0-RC3"

version := "1.0-build_sbt"

artifactName := {
  (sv: ScalaVersion, module: ModuleID, artifact: Artifact) => {
    val suffix = "-" + sys.props.getOrElse("environment","dev") + (if (artifact.classifier.isDefined) "-" + artifact.classifier.get else "")
    artifact.name + "_" + sv.binary + "-" + (version in ThisBuild).value + suffix + "." + artifact.extension
  }
}

sbt 쉘은 다음과 같은 출력을 제공했습니다.

[sbt-0-13-3]> show makePom::artifactPath
[info] /Users/jacek/sandbox/so/sbt-0.13.3/target/scala-2.11.0-RC3/sbt-0-13-3_2.11.0-RC3-1.0-version_sbt-dev.pom

나는 makePom::artifactPath그것이 역 의존성이라는 것을 알았 기 때문에 설정을 사용 했습니다 artifactName(그렇지 않으면 artifactName함수 의 값을 표시 할 수 없었을 것입니다 ).

[sbt-0-13-3]> inspect artifactName
[info] Setting: scala.Function3[sbt.ScalaVersion, sbt.ModuleID, sbt.Artifact, java.lang.String] = <function3>
[info] Description:
[info]  Function that produces the artifact name from its definition.
[info] Provided by:
[info]  {file:/Users/jacek/sandbox/so/sbt-0.13.3/}sbt-0-13-3/*:artifactName
[info] Defined at:
[info]  /Users/jacek/sandbox/so/sbt-0.13.3/build.sbt:5
[info] Dependencies:
[info]  {.}/*:version
[info] Reverse dependencies:
[info]  *:makePom::artifactPath
[info] Delegates:
[info]  *:artifactName
[info]  {.}/*:artifactName
[info]  */*:artifactName
[info] Related:
[info]  */*:artifactName

Play 프로젝트의 버전을 설정하려는 경우 version in ThisBuildsbt가이 작업을 수행하므로 걱정할 필요가 없습니다.

val appVersion := ... // some operation on version in ThisBuild
val main = play.Project(appName, appVersion, dependencies = appDependencies)

무엇을 play.Project( GitHub의 play.Project.scala 참조 )는 전달 applicationVersion하는 version것이며 버전을 설정했기 때문에 version.sbt이미 sbt 자체에 의해 설정되었습니다. 그러나 명시 적으로 수행하려면 다음과 같이하십시오.

version := (version in ThisBuild).value

에서 build.sbt.

[sbt-0-13-3]> show version
[info] 1.0-build_sbt
[sbt-0-13-3]> reload
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Loading project definition from /Users/jacek/sandbox/so/sbt-0.13.3/project
[info] Set current project to sbt-0-13-3 (in build file:/Users/jacek/sandbox/so/sbt-0.13.3/)
[sbt-0-13-3]> show version
[info] 1.0-version_sbt

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

외부에서 전달 된 값 변경을 기반으로 사용자 정의 위젯에서 멤버의 값을 동적으로 변경하는 방법

분류에서Dev

설치된 패키지의 이전 버전을 제거 하시겠습니까?

분류에서Dev

설치된 패키지의 이전 버전을 제거 하시겠습니까?

분류에서Dev

7zip CLI (7za)로 전환하여 추출 된 파일의 수정 시간을 지금으로 설정 하시겠습니까?

분류에서Dev

중첩 된 값으로 방대한 사전 사전을 효율적으로 정렬 하시겠습니까?

분류에서Dev

동일한 IP에서 2 개의 장치에 대한 포트 전달을 설정 하시겠습니까?

분류에서Dev

"버전이 지정된"파일 이름으로 파일 시스템을 통합 하시겠습니까?

분류에서Dev

시작시 전역 적으로 설정된 JsonStringEnumConverter를 사용하여 모델의 열거 형 속성을 제외 하시겠습니까?

분류에서Dev

xmlhttp.open ()에 지정된 파일의 값을 PHP 파일로 전달하는 방법은 무엇입니까?

분류에서Dev

Rails에 설치된 모든 이전 버전의 gem을 정리하는 방법이 있습니까?

분류에서Dev

Meson에서 닌자 버전을 지정 하시겠습니까?

분류에서Dev

사전의 속성을 설정 하시겠습니까?

분류에서Dev

오버로드 된 PartialEq에 전달 된 값의 소유권

분류에서Dev

제네릭으로 전달 된 인터페이스에서 특정 값의 유형을 추론하는 방법이 있습니까?

분류에서Dev

WebView에서 Chrome 버전의 WebView를 기본값으로 설정하는 방법

분류에서Dev

Angular에서 요소로 정의 된 지시문에 ngStyle을 전달하는 방법은 무엇입니까?

분류에서Dev

setup.py에서 설정에 전달 된 버전을 어떻게 알 수 있습니까?

분류에서Dev

Field_A 값을 사용하여 동일한 필드에서 수정 된 버전의 Field_A 값을 기반으로 레코드를 찾습니다.

분류에서Dev

인수로 전달하여 작업 할 속성을 정의 하시겠습니까?

분류에서Dev

동적으로 추가 된 컨트롤에 대한 dat.gui 사전 설정을 저장 하시겠습니까?

분류에서Dev

JavaFX는 컴퓨터에 설치된 특정 응용 프로그램의 버전을 가져옵니다.

분류에서Dev

Swift의 인수로 구조체의 "유형"을 전달 하시겠습니까?

분류에서Dev

C ++ 11 이전 버전에서 std :: function () 호출 가능을 사용자 정의 처리기로 리디렉션 하시겠습니까?

분류에서Dev

PickerView의 현재 선택을 기반으로 TableView에 값을 표시하도록 설정 하시겠습니까?

분류에서Dev

콜백을 미리 정의 된 콜백에 변수로 전달하는 방법

분류에서Dev

정의되지 않은 값을 사전에 인수로 전달

분류에서Dev

파이썬에서 중첩 된 사전의 키, 값을 확인 하시겠습니까?

분류에서Dev

중첩 된 사전에 값을 설정하면 둘 이상의 위치에 설정됩니다.

분류에서Dev

버튼을 통해 양식의 배경 이미지를 다른 사람에게 전달 하시겠습니까?

Related 관련 기사

  1. 1

    외부에서 전달 된 값 변경을 기반으로 사용자 정의 위젯에서 멤버의 값을 동적으로 변경하는 방법

  2. 2

    설치된 패키지의 이전 버전을 제거 하시겠습니까?

  3. 3

    설치된 패키지의 이전 버전을 제거 하시겠습니까?

  4. 4

    7zip CLI (7za)로 전환하여 추출 된 파일의 수정 시간을 지금으로 설정 하시겠습니까?

  5. 5

    중첩 된 값으로 방대한 사전 사전을 효율적으로 정렬 하시겠습니까?

  6. 6

    동일한 IP에서 2 개의 장치에 대한 포트 전달을 설정 하시겠습니까?

  7. 7

    "버전이 지정된"파일 이름으로 파일 시스템을 통합 하시겠습니까?

  8. 8

    시작시 전역 적으로 설정된 JsonStringEnumConverter를 사용하여 모델의 열거 형 속성을 제외 하시겠습니까?

  9. 9

    xmlhttp.open ()에 지정된 파일의 값을 PHP 파일로 전달하는 방법은 무엇입니까?

  10. 10

    Rails에 설치된 모든 이전 버전의 gem을 정리하는 방법이 있습니까?

  11. 11

    Meson에서 닌자 버전을 지정 하시겠습니까?

  12. 12

    사전의 속성을 설정 하시겠습니까?

  13. 13

    오버로드 된 PartialEq에 전달 된 값의 소유권

  14. 14

    제네릭으로 전달 된 인터페이스에서 특정 값의 유형을 추론하는 방법이 있습니까?

  15. 15

    WebView에서 Chrome 버전의 WebView를 기본값으로 설정하는 방법

  16. 16

    Angular에서 요소로 정의 된 지시문에 ngStyle을 전달하는 방법은 무엇입니까?

  17. 17

    setup.py에서 설정에 전달 된 버전을 어떻게 알 수 있습니까?

  18. 18

    Field_A 값을 사용하여 동일한 필드에서 수정 된 버전의 Field_A 값을 기반으로 레코드를 찾습니다.

  19. 19

    인수로 전달하여 작업 할 속성을 정의 하시겠습니까?

  20. 20

    동적으로 추가 된 컨트롤에 대한 dat.gui 사전 설정을 저장 하시겠습니까?

  21. 21

    JavaFX는 컴퓨터에 설치된 특정 응용 프로그램의 버전을 가져옵니다.

  22. 22

    Swift의 인수로 구조체의 "유형"을 전달 하시겠습니까?

  23. 23

    C ++ 11 이전 버전에서 std :: function () 호출 가능을 사용자 정의 처리기로 리디렉션 하시겠습니까?

  24. 24

    PickerView의 현재 선택을 기반으로 TableView에 값을 표시하도록 설정 하시겠습니까?

  25. 25

    콜백을 미리 정의 된 콜백에 변수로 전달하는 방법

  26. 26

    정의되지 않은 값을 사전에 인수로 전달

  27. 27

    파이썬에서 중첩 된 사전의 키, 값을 확인 하시겠습니까?

  28. 28

    중첩 된 사전에 값을 설정하면 둘 이상의 위치에 설정됩니다.

  29. 29

    버튼을 통해 양식의 배경 이미지를 다른 사람에게 전달 하시겠습니까?

뜨겁다태그

보관