메이븐 / 오프라인 빌드 하는 법 /
maven repository .m2
옮기기
이 .m2 를 옮기는 작업은 offline 에서 build 를 하기 위함이다.
절차
간략하게 절차를 설명하면
- maven 으로 project 를 설치(install)를 한다.(
maven install
) - 그리고
~/.m2/repository
를 복사해서 offline 컴퓨터에 옮긴다. 참고로, 여기서는 docker 에서 작업을 한다. - build 를 해보고 빠진 부분이 있으면 pom.xml 에 추가하고 다시
maven install
를 한다.- 이것은 code를 가져와서
mvn compile
을 하면 이런 행위를 안해도 될 수 있을 것 같긴 하다. 하지만 여기서는mvn compile
을 하지 않았다. - 또는 docker의 volume 과 .m2 에 대한 link 만들어서 좀 더 간단하게 작업을 할 수 있다.
- 이것은 code를 가져와서
dnf install maven
mkdir ~/testdir && cd ~/testdir
# /data/pom.xml 에 올려놓은 pom.xml 이 있다.
cp /data/pom.xml ./
/usr/share/maven/bin/mvn install
cd ~
tar -cvzf m2archive.tgz .m2/
build.gradle 로 pom.xml 만들기
kotlin to groovy
이거 혹시나 build.gradle 에서 kotlin 을 DSL 로 사용하는 경우를 위해서 적어놓은 것이다.
implementation(kotlin("stdlib-jdk8"))
-->
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0"
implementation("io.projectreactor.netty" , "reactor-netty" , "1.+")
-->
implementation "io.projectreactor.netty:reactor-netty:1.+"
val taskNames = gradle.startParameter.taskNames
-->
def taskNames = gradle.startParameter.taskNames
plugins {
kotlin("jvm") version "1.6.0"
application
}
-->
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.6.0'
id 'application'
}
val mynewtask by tasks.registering { ... }
-->
task createDocs { ... }
maven repository (.m2) 생성
dnf install maven
mkdir ~/testdir && cd ~/testdir
cp /data/pom.xml ./
/usr/share/maven/bin/mvn install
.m2 를 묶기
이제 .m2 folder 를 묶어서 옮기자. 그리고 $USER_HOME/
에서 압축을 풀면 된다. 그러면, $USER_HOME/.m2/
가 생성된다.
cd ~
tar -cvzf m2archive.tgz .m2/
압축 풀때는 아래처럼 하면 된다.
cd ~
tar -xvzf m2archive.tgz
사용법
maven repository 경로는 아래처럼 변경할 수 있다. 대체로 maven central 에서 download 가 가능하지만, 내 경우는 gradle 관련 dependency 의 jar 이 없는 경우가 있어서, 이 경우는 gradle 의 repository https://plugins.gradle.org/m2/
를 이용해야만 했다.
// build.gradle
...
repositories {
maven {
url '/locallib/.m2/repository' // $proj/locallib/.m2/repository
}
}
<!-- pom.xml -->
<project>
...
<repositories>
<repository>
<id>example-repo</id>
<name>Example Repository</name>
<url>file://path/to/your/local/repository</url>
</repository>
</repositories>
</project>
See Also
- Migrating build logic from Groovy to Kotlin : gradle 에서 kotlin 과 groovy 의 syntax 차이
- Gradle | Kotlin
댓글 없음:
댓글 쓰기