Nexus에서 자체 Maven 리포지토리를 구축하고 sbt에서 사용
8582 단어 Mavensbt리포지토리docker-composeNexus
로컬에 리포지토리 서버 구축
프로덕션 용 리포지토리 서버는 별도로 현장에서 준비됩니다.
로컬 검증은 간편하게 Nexus 공식 Docker 이미지를 사용.
Nexus 서버 생성~로그인
적당히 작업 폴더를 파고 docker-compose.yml
를 아래와 같이 작성.
$ mkdir nexus && cd nexus
$ vim docker-compose.yml
docker-compose.ymlversion: '2'
services:
nexus3:
image: sonatype/nexus3
volumes:
- nexus-data:/nexus-data
ports:
- 8081:8081
volumes:
nexus-data:
만든 후 Docker 컨테이너를 시작하고 자주 기다립니다.
$ docker-compose up -d
Creating network "nexus_default" with the default driver
Creating nexus_nexus3_1 ...
Creating nexus_nexus3_1 ... done
컨테이너의 로그에 아래와 같이 표시되면 기동 완료.
$ docker-compose logs
...
nexus3_1 | -------------------------------------------------
nexus3_1 |
nexus3_1 | Started Sonatype Nexus OSS 3.6.2-01
nexus3_1 |
nexus3_1 | -------------------------------------------------
http://localhost:8081/
에 액세스하면 Nexus 관리 콘솔이 표시됩니다.
오른쪽 상단 링크에서 "Sign In"
※기본적으로 다음 관리 사용자/비밀번호가 준비되어 있습니다: [admin/admin123]
⇒로그인 후, 필요에 따라서 「설정」>「Users」로부터 유저를 작성. (이번은 검증용이므로 생략)
Maven 리포지토리 생성
자체 라이브러리를 등록하는 Maven 리포지토리를 만듭니다.
repositories > Create repository > maven2 (hosted)
Snapshot용과 Release용을 각각 작성.
참조용으로 상기 리포지토리를 정리한 그룹을 작성.
repositories > Create repository > maven2 (group)
※ maven-central
등의 추가는 기호로.
sbt에서 리포지토리 사용
자작한 리포지토리를 Scala 프로젝트에서 이용하려면 build.sbt
에 아래와 같이 설정한다.
build.sbtorganization := "com.example"
name := "scala-libs-sample"
version := "0.0.1-SNAPSHOT"
////////////////////////////////////////////////////////////////////////////////////
// My Hosted Repository
val myrepos = "http://localhost:8081/"
// リポジトリ認証情報 => 後述の[~/.sbt/.credentials]の内容を読み込む
credentials += Credentials(Path.userHome / ".sbt" / ".credentials")
// リポジトリへデプロイする側の設定
publishMavenStyle := true
publishArtifact in Test := false
pomIncludeRepository := { _ => false }
publishTo := {
if (isSnapshot.value)
Some("snapshots" at myrepos + "repository/my-snapshots")
else
Some("releases" at myrepos + "repository/my-releases")
}
// モジュールを利用する側の設定
resolvers += "Nexus" at myrepos + "repository/my-repo-group/"
libraryDependencies += "com.example" % "scala-libs-sample" % "0.0.1-SNAPSHOT"
리포지토리 서버의 인증 정보는 홈 디렉토리에 .sbt/.credentials
파일을 작성하여 아래와 같이 기재한다. (※유저명 등은 적절히 변경)
~/.sbt/.credentialsrealm=Sonatype Nexus Repository Manager
host=localhost
user=admin
password=admin123
구성에 문제가 없으면 publish
명령으로 서버에 모듈이 배포되어야 함>
$ sbt publish
...
[info] published scala-libs-sample_2.10 to http://localhost:8081/repository/my-snapshots/com/example/scala-libs-sample_2.10/0.0.1-SNAPSHOT/scala-libs-sample_2.10-0.0.1-SNAPSHOT.pom
[info] published scala-libs-sample_2.10 to http://localhost:8081/repository/my-snapshots/com/example/scala-libs-sample_2.10/0.0.1-SNAPSHOT/scala-libs-sample_2.10-0.0.1-SNAPSHOT.jar
[info] published scala-libs-sample_2.10 to http://localhost:8081/repository/my-snapshots/com/example/scala-libs-sample_2.10/0.0.1-SNAPSHOT/scala-libs-sample_2.10-0.0.1-SNAPSHOT-sources.jar
[info] published scala-libs-sample_2.10 to http://localhost:8081/repository/my-snapshots/com/example/scala-libs-sample_2.10/0.0.1-SNAPSHOT/scala-libs-sample_2.10-0.0.1-SNAPSHOT-javadoc.jar
[success] Total time: 2 s, completed 2017/12/16 23:14:43
Reference
이 문제에 관하여(Nexus에서 자체 Maven 리포지토리를 구축하고 sbt에서 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/h-oikawa/items/791b6ee4e2f08645392c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ mkdir nexus && cd nexus
$ vim docker-compose.yml
version: '2'
services:
nexus3:
image: sonatype/nexus3
volumes:
- nexus-data:/nexus-data
ports:
- 8081:8081
volumes:
nexus-data:
$ docker-compose up -d
Creating network "nexus_default" with the default driver
Creating nexus_nexus3_1 ...
Creating nexus_nexus3_1 ... done
$ docker-compose logs
...
nexus3_1 | -------------------------------------------------
nexus3_1 |
nexus3_1 | Started Sonatype Nexus OSS 3.6.2-01
nexus3_1 |
nexus3_1 | -------------------------------------------------
organization := "com.example"
name := "scala-libs-sample"
version := "0.0.1-SNAPSHOT"
////////////////////////////////////////////////////////////////////////////////////
// My Hosted Repository
val myrepos = "http://localhost:8081/"
// リポジトリ認証情報 => 後述の[~/.sbt/.credentials]の内容を読み込む
credentials += Credentials(Path.userHome / ".sbt" / ".credentials")
// リポジトリへデプロイする側の設定
publishMavenStyle := true
publishArtifact in Test := false
pomIncludeRepository := { _ => false }
publishTo := {
if (isSnapshot.value)
Some("snapshots" at myrepos + "repository/my-snapshots")
else
Some("releases" at myrepos + "repository/my-releases")
}
// モジュールを利用する側の設定
resolvers += "Nexus" at myrepos + "repository/my-repo-group/"
libraryDependencies += "com.example" % "scala-libs-sample" % "0.0.1-SNAPSHOT"
realm=Sonatype Nexus Repository Manager
host=localhost
user=admin
password=admin123
$ sbt publish
...
[info] published scala-libs-sample_2.10 to http://localhost:8081/repository/my-snapshots/com/example/scala-libs-sample_2.10/0.0.1-SNAPSHOT/scala-libs-sample_2.10-0.0.1-SNAPSHOT.pom
[info] published scala-libs-sample_2.10 to http://localhost:8081/repository/my-snapshots/com/example/scala-libs-sample_2.10/0.0.1-SNAPSHOT/scala-libs-sample_2.10-0.0.1-SNAPSHOT.jar
[info] published scala-libs-sample_2.10 to http://localhost:8081/repository/my-snapshots/com/example/scala-libs-sample_2.10/0.0.1-SNAPSHOT/scala-libs-sample_2.10-0.0.1-SNAPSHOT-sources.jar
[info] published scala-libs-sample_2.10 to http://localhost:8081/repository/my-snapshots/com/example/scala-libs-sample_2.10/0.0.1-SNAPSHOT/scala-libs-sample_2.10-0.0.1-SNAPSHOT-javadoc.jar
[success] Total time: 2 s, completed 2017/12/16 23:14:43
Reference
이 문제에 관하여(Nexus에서 자체 Maven 리포지토리를 구축하고 sbt에서 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/h-oikawa/items/791b6ee4e2f08645392c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)