2015-02-06 20 views
23

Tôi có thư viện và ứng dụng Android bằng Gradle và Android Studio. Tôi có thể bao gồm thư viện trực tiếp vào dự án như sauGradle: Cách xuất bản thư viện Android lên kho lưu trữ cục bộ

compile project(':library') 

Bởi vì tôi không muốn lưới lên với mã nguồn thư viện, tôi muốn xuất bản thư viện vào kho lưu trữ địa phương vì vậy mà tôi có thể sử dụng như

compile 'com.mygroup:library:1.0' 

Bất kỳ lời khuyên nào?

Trả lời

39

Tôi vừa tìm ra giải pháp. Trong build.gradle của dự án thư viện, thêm này

apply plugin: 'maven' 

group = 'com.mygroup' 
version = '1.0' 

uploadArchives { 
    repositories { 
     mavenDeployer { 
      repository(url: "file://[your local maven path here]") 
     } 
    } 
} 

trong thư mục dự án, gõ lệnh

gradle uploadArchives 

đọc Publishing artifacts sau để biết thêm thông tin

+2

'[đường maven địa phương của bạn ở đây]' là như '~ thư mục/.m2'? – zygimantus

+3

kho lưu trữ (url: mavenLocal().getUrl()) – abg

0

trong settings.gradle thêm

include 'riz.com.mylibrary' 
project(':riz.com.mylibrary').projectDir = new File('C:\\Users\\Rizwan Asif\\AndroidStudioProjects\\mylibrary') 

Sau đó, trong build.gradle trong phụ thuộc CIES thêm

compile project(':riz.com.mylibrary') 
+1

Đây là cách tốt nhất nếu bạn đang phát triển thư viện cùng một lúc, nhưng tôi gặp lỗi 'Cấu hình với tên' mặc định 'không tìm thấy' khi tôi cố gắng đồng bộ hóa cấp. – Megakoresh

25

Đối với một thư viện Android bạn nên sử dụng các plugin Android Gradle-Maven https://github.com/dcendents/android-maven-gradle-plugin:

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3' 
    } 
} 

apply plugin: 'com.android.library' 
apply plugin: 'com.github.dcendents.android-maven' 

Sau đó, để công bố vào kho lưu trữ của bạn chạy địa phương:

./gradlew install 

mà sẽ cài đặt nó trong $ HOME/.m2/kho lưu trữ. Trong ứng dụng hoặc dự án khác của bạn, bạn có thể bao gồm nó bằng cách thêm mavenLocal() vào kho lưu trữ của mình.

Hoặc, nếu thư viện của bạn ở trên GitHub thì bạn có thể chỉ cần bao gồm nó trong các dự án khác sử dụng JitPack. Sau đó, bạn không phải chạy lệnh trên và chỉ có thể sử dụng những gì đã được đẩy.

+0

Điều này sẽ nhận được tín dụng là câu trả lời đúng. –

+3

Tôi giả sử một người cũng cần 'nhóm = 'com.example' phiên bản = '1.0'' trong lib. – WindRider

4

Tôi thích thêm nguồn java và javadoc vào kho lưu trữ maven. Tập lệnh sau xuất bản thư viện Android của bạn tới kho lưu trữ maven bằng cách sử dụng android maven plugin. Nó tạo ra các tệp .aar, javadoc.jar, sources.jar và .pom và cập nhật maven-metadata.xml sau khi tải các tệp lên kho lưu trữ maven. Tôi cũng đặt kịch bản trên GitHub.

apply plugin: 'com.android.library' 
apply plugin: 'maven' 

//Your android configuration 
android { 
    //... 
} 

//maven repository info 
group = 'com.example' 
version = '1.0.0' 

ext { 
    //Specify your maven repository url here 
    repositoryUrl = 'ftp://your.maven.repository.com/maven2' 
    //Or you can use 'file:\\\\C:\\Temp' or 'maven-temp' for a local maven repository 
} 

//Upload android library to maven with javadoc and android sources 
configurations { 
    deployerJars 
} 

//If you want to deploy to an ftp server 
dependencies { 
    deployerJars "org.apache.maven.wagon:wagon-ftp:2.2" 
} 

// custom tasks for creating source/javadoc jars 
task javadoc(type: Javadoc) { 
    source = android.sourceSets.main.java.srcDirs 
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) 
    destinationDir = file("../javadoc/") 
    failOnError false 
} 

task javadocJar(type: Jar, dependsOn: javadoc) { 
    classifier = 'javadoc' 
    from javadoc.destinationDir 
} 

//Creating sources with comments 
task androidSourcesJar(type: Jar) { 
    classifier = 'sources' 
    from android.sourceSets.main.java.srcDirs 
} 

//Put the androidSources and javadoc to the artifacts 
artifacts { 
    archives androidSourcesJar 
    archives javadocJar 
} 

uploadArchives { 
    repositories { 
     mavenDeployer { 
      configuration = configurations.deployerJars 
      repository(url: repositoryUrl) { 
       //if your repository needs authentication 
       authentication(userName: "username", password: "password") 
      } 
     } 
    } 
} 

Gọi nó với

./gradlew uploadArchives 
Các vấn đề liên quan