[maven-2] mvn 설치를 대체하는 Gradle

mvn에 2 가지 프로젝트 빌드가 있습니다. Gradle로 교체하려고합니다.

프로젝트 1은 SDK이고 프로젝트 2는 SDK를 사용합니다 (예)

maven 당시에는 전체 프로젝트를 로컬 저장소에 추가하는 mvn install을 사용하여 아티팩트를 작성합니다.

나는 그런 gradle에서 일하는 것을 좋아합니다. 나는 프로젝트 1 build.gradle이 gradle 로컬 리포지토리로 게시해야하고 예제 프로젝트에서 사용해야합니다.

maven에서 우리는 .m2 폴더에 프로젝트 아티팩트를 추가하는 mvn install을 수행하지만 프로젝트 아티팩트를 로컬 저장소에 추가 할 수 있도록 gradle에서 수행하는 방법.

내가 그렇게 할 수있는 방법?



답변

sdk/build.gradle:

apply plugin: "maven"

group = "foo"
version = "1.0"

example/build.gradle:

repositories {
    mavenLocal()
}

dependencies {
    compile "foo:sdk:1.0"
}

$sdk> gradle install

$example> gradle build


답변

당신은 찾고 있습니다 :

gradle publishToMavenLocal

사용 가능 :

apply plugin: 'maven-publish'

참조 : https://docs.gradle.org/current/userguide/publishing_maven.html


답변

다중 프로젝트 빌드에 대한 Gradle의 문서를 확인하십시오 .

다음은 몇 가지 추가 종속성이있는 예입니다. gradle install루트 폴더에 전화 하면 모든 것이 로컬 리포지토리에 저장됩니다.

폴더 구조 :

root
+--> build.gradle
+--> settings.gradle
+--> sdk
|    +--> build.gradle
+--> example
     +--> build.gradle

root / build.gradle :

allprojects {
  apply plugin: 'java'
  apply plugin: 'maven'

  group = 'myGroup'
  version = '0.1-SNAPSHOT'
}

root / settings.gradle :

include 'sdk'
include 'example'

root / sdk / build.gradle :

dependencies {
  // just an example external dep.
  compile group:'commons-lang', name:'commons-lang', version:'2.3'
}

root / example / build.gradle :

dependencies {
  compile project(':sdk')
  compile group:'log4j', name:'log4j', version:'1.2.16'
}


답변

자신의 라이브러리를 로컬 저장소에 공개해야합니다. 다음과 같은 방법으로이를 수행 할 수 있습니다.

  1. maven-publish플러그인 추가 :

    plugins {
        // your other plugins come here...
        id 'maven-publish'
    }
    
  2. 빌드 섹션에 공개 섹션을 추가하십시오.

    publishing {
        publications {
            myCoolLibrary(MavenPublication) {
                from components.java
            }
        }
    }
    
  3. 운영 gradle build publishToMavenLocal

    자세한 내용 은 설명서를 참조하십시오 .


답변