mvn 설치를 대체하는 Gradle


163

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

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

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

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

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

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


답변:


170

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

1
플러그인 적용 : "maven"및 $ sdk> gradle install sm을 .m2에 설치합니다. 그리고 mavenLocal ()은 .m2 및 .gradle에서 정보를 가져옵니다.
Rajmahendra 10

14
gradle install로컬 Maven 리포지토리에 게시하고 mavenLocal()거기에서 종속성을 찾습니다.
피터 Niederwieser

1
Gradle은 Maven처럼 "단계 지향적"이 아닙니까? IOW, gradle publish유언장을 작성해 도 install단계를 거치지 않습니까?
크리스 F


8

다중 프로젝트 빌드에 대한 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'
}

4
이것이 이상적인 방법입니까? SDK를 사용하는 example2라는 새 프로젝트를 만들려면 어떻게해야합니까? 이제 그는 의존성을 공유한다는 이유로 2 개의 관련없는 프로젝트를 루트 프로젝트에 배치해야합니까? 이 전체 '멀티 프로젝트'설정도 1 Git 프로젝트라고 생각할 것입니다. 다시 말하지만, 이것은 회사 / 다중 개발자 워크 플로에 좋지 않습니까?
Anthony Chuinard

2

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

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

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.