Lớp thay thế để cài đặt mvn


162

Tôi có 2 dự án xây dựng khác nhau trên mvn. Tôi đang cố gắng để thay thế cho Gradle.

dự án 1 là SDK và dự án 2 là sử dụng sdk (ví dụ)

Trong thời gian của maven, nó tạo ra tạo tác bằng cách sử dụng cài đặt mvn để thêm toàn bộ dự án vào kho lưu trữ cục bộ.

Tôi thích làm việc trong lớp như thế. Tôi thích dự án 1 build.gradle cần đăng nó dưới dạng kho lưu trữ cục bộ và sau đó ví dụ dự án cần sử dụng.

Trong maven, chúng tôi cài đặt mvn để thêm một tạo phẩm dự án vào thư mục .m2 nhưng cách thực hiện trong lớp để tôi có thể thêm một vật phẩm dự án vào kho lưu trữ cục bộ.

Bất cứ cách nào tôi có thể làm như vậy?


Câu trả lời:


169

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
áp dụng plugin: "maven" và $ sdk> gradle cài đặt này sẽ cài đặt sdk vào .m2 phải không? Và mavenLocal () cũng nhận được thông tin từ .m2 và .gradle?
Rajmahendra

14
gradle installxuất bản vào repo Maven địa phương và mavenLocal()đảm bảo xem xét các phụ thuộc.
Peter Niederwieser

1
Có phải Gradle không "định hướng theo pha" như Maven? IOW, nếu tôi làm theo gradle publishý muốn thì nó cũng không trải qua một installgiai đoạn?
Chris F


8

Kiểm tra tài liệu của Gradle về các bản dựng đa dự án .

Đây là một ví dụ, với một số phụ thuộc thêm. Chỉ cần gọi gradle installtrong thư mục gốc, và tất cả sẽ được xây dựng và đưa vào repo cục bộ của bạn.

Cấu trúc thư mục:

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
Đây có phải là thực hành lý tưởng? Điều gì sẽ xảy ra nếu anh ta muốn tạo một dự án mới, example2, cũng dựa vào sdk? Bây giờ anh phải đặt 2 dự án không liên quan vào một dự án gốc chỉ vì chúng có chung một sự phụ thuộc? Bạn sẽ nghĩ rằng toàn bộ thiết lập 'nhiều dự án' này cũng sẽ là dự án 1 Git. Một lần nữa, điều này có tệ cho quy trình làm việc của công ty / nhiều nhà phát triển không?
Anthony Chuinard

2

Bạn cần xuất bản thư viện của riêng bạn vào kho lưu trữ địa phương của bạn. Bạn có thể làm điều đó theo cách sau:

  1. Thêm maven-publishplugin:

    plugins {
        // your other plugins come here...
        id 'maven-publish'
    }
  2. Thêm phần xuất bản vào tệp xây dựng của bạn:

    publishing {
        publications {
            myCoolLibrary(MavenPublication) {
                from components.java
            }
        }
    }
  3. Chạy gradle build publishToMavenLocal

    Tìm thêm chi tiết trong tài liệu .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.