jar를 로컬 저장소에 게시하는 방법은 무엇입니까?
저장소에서 사용할 수없는 jar (sbt 프로젝트가 아니라 소스 코드, jar 파일 만)로 사용할 수있는 라이브러리가 있습니다.
libraryDependencies += "org.xxx" % "xxx" % "1.0"
표기법을 사용하여 추가 할 수있는 항아리를 로컬로 게시하는 방법이 있습니까? (파일을 lib
폴더 에 복사하여 프로젝트에 추가하는 방법을 이미 알고 있습니다 .)
** publishLocal ** 작업은 프로젝트를 로컬 Ivy 저장소에 게시하는 데 사용됩니다. 기본적 으로이 로컬 저장소는 $ {user.home} /. ivy2 / 지역에 있습니다. 그런 다음 머신 머신 소스 의 다른 프로젝트 에서이 프로젝트를 사용할 수 있습니다.
편집 : 죄송합니다. 질문을 잘못 읽었습니다. 다음은 로컬 아이비 저장소에 항아리 또는 소스를 게시 하는 예 입니다.
tl; dr 나는 그것을 sbt의 기능이 아닌 트릭이라고 부를 것입니다. 경고를 그리스도.
file.jar
게시해야 할 가정 해 보겠습니다 . sbt를 포함하는 모든 빌드 파일과 마침 프로젝트의 파일에서 결과적으로 아티팩트 (대부분의 경우 jar)를 생성하는 작업을 실행합니다.
프로젝트는 아티팩트 의 좌표 를 설정 합니다 .
트릭은 sbt가 게시 할 jar 의 환경 (= 좌표 ) 을 설정하는 데 필요한 것을 활용하는 것입니다 (그렇지 사용자가없는 일 수도 있고 수도있는 명령 줄에서 지정해야합니다).
만들기 build.sbt
필요한 설정으로 - organization
, name
, version
그리고 아마도 scalaVersion
-과 저장 항아리 파일입니다.
organization := "org.abc"
name := "my-own-publish-jar"
version := "1.0.0"
scalaVersion := "2.11.3"
packageBin in Compile := file(s"${name.value}_${scalaBinaryVersion.value}.jar")
빌드 compile:package
가 jar 파일을 가리 키도록 작업을 변경하는 것을 눈치 채 입니다.
그게 다야.
실행 sbt publishLocal
하고 jar 파일은 Ivy2 로컬 저장소, 즉 ~/.ivy2/local/org.abc/my-own-publish-jar_2.11/1.0.0/jars/my-own-publish-jar_2.11.jar
.
protip 명령 줄에 지정된 좌표로 작성하는 것이 좋습니다.
하자 당신이 가지고있는 파일 wetElephant.jar
및 일부 wetElephant-javadoc.jar
3 자 라이브러리와 로컬의 저장소에 게시하여 다른 프로젝트에서 그것을 참조 할 대응의 javadoc libraryDependencies
SBT taskKey를 .
수행해야 할 작업은 다음과 가변합니다.
- 라이브러리 (
wetElephant.jar
및wetElephant-javadoc.jar
)를modules\wetElephant
build.sbt 파일 (또는 Build.scala 파일) 에서 프로젝트 정의
lazy val stolenLib = project .in(file("modules/wetElephant")) .settings( organization := "com.stolenLibs", name := "wetElephant", version := "0.1-IDonKnow", crossPaths := false, //don't add scala version to this artifacts in repo publishMavenStyle := true, autoScalaLibrary := false, //don't attach scala libs as dependencies description := "project for publishing dependency to maven repo, use 'sbt publishLocal' to install it", packageBin in Compile := baseDirectory.value / s"${name.value}.jar", packageDoc in Compile := baseDirectory.value / s"${name.value}-javadoc.jar" )
publishLocal
sbt / activator에서 작업을 호출합니다 (activator에서 작업을 수행하고 proejct 이름으로 접두사를 붙였습니다)../activator wetElephant/publishLocal
... 출력을 읽고 게시 된 내용과 위치를 확인합니다.
/cygdrive/d/devstation-workspace/projects/m4l-patches 1
[info] Loading project definition from D:\devstation-workspace\projects\m4l-patches\project
[info] Set current project to m4l-patches (in build file:/D:/devstation-workspace/projects/m4l-patches/)
[info] Updating {file:/D:/devstation-workspace/projects/m4l-patches/}wetElephant...
[info] Packaging D:\devstation-workspace\projects\m4l-patches\modules\wetElephant\target\wetelephant-0.1-IDonKnow-sources.jar ...
[info] Done packaging.
[info] Wrote D:\devstation-workspace\projects\m4l-patches\modules\wetElephant\target\wetelephant-0.1-IDonKnow.pom
[info] Resolving org.fusesource.jansi#jansi;1.4 ...4 ....
[info] Done updating.
[info] :: delivering :: com.stolenLibs#wetelephant;0.1-IDonKnow :: 0.1-IDonKnow :: release :: Sun Dec 20 20:09:24 CET 2015
[info] delivering ivy file to D:\devstation-workspace\projects\m4l-patches\modules\wetElephant\target\ivy-0.1-IDonKnow.xml
[info] published wetelephant to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\poms\wetelephant.pom
[info] published wetelephant to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\jars\wetelephant.jar
[info] published wetelephant to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\srcs\wetelephant-sources.jar
[info] published wetelephant to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\docs\wetelephant-javadoc.jar
[info] published ivy to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\ivys\ivy.xml
[success] Total time: 1 s, completed 2015-12-20 20:09:24
선택적으로 다른 프로젝트에서 기존 라이브러리 사용
libraryDependencies += "com.stolenLibs" % "wetElephant" % "0.1-IDontKnow"
면책 조항 : 출처를 게시하지 않는 방법을 모르겠습니다 ...
다음은 몇 달 전에 sbt 아티팩트를 maven 저장소 (로컬 및 원격)에 푸시하기 위해 팔로우 한 블로그 게시물입니다.
http://brizzled.clapper.org/id/100/
이 시도 :
http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
publish-local
여기에 로컬 저장소 (뿐 아니라 ) 를 만드는 것으로 Play Framework / sbt 프로젝트를 만들었습니다 . https://github.com/muymoo/local-ivy-repo-sbt 자동으로 사용합니다.Build.scala
makeLocalRepoSettings(publishedProjects):_*
과
localRepoArtifacts += "org.apache.ws.security" % "wss4j" % "1.6.9"
이것들 localRepoArtifacts
은 내 로컬 ivy repo에서 발견되지만 평범한 오래된 jar 파일로도 작동하도록 이것을 편집 할 수 있다고 생각합니다.
실행하려면 : play local-repository-created
그것은의 간단한 버전입니다 https://github.com/sbt/sbt-remote-control 자신에 훨씬 더 않습니다 Build.scala
.
참고 URL : https://stackoverflow.com/questions/7798767/how-to-publish-jar-to-local-repository
'ProgramingTip' 카테고리의 다른 글
클래스를 위해 컴파일러가 만든 모든 멤버 함수는 무엇입니까? (0) | 2020.12.12 |
---|---|
파일에 vim 설정 포함 (0) | 2020.12.12 |
Numpy의 평균 제곱 오차? (0) | 2020.12.11 |
Docker Compose 파일에서 $ 달러 기호를 어떻게 이스케이프 할 수 있습니까? (0) | 2020.12.11 |
쉘 펼쳐 비교에서 x $ VAR = xyes를 자주 사용하는 이유는 무엇입니까? (0) | 2020.12.11 |