2016-05-27 83 views
4

我有用Kotlin编写的Intellij Idea 2016.1 gradle-application(不是Android)。我需要将它放在jCenter中,并作为依赖项添加到Android应用程序中。我找不到任何有关它的信息。所有引用都涉及Android项目。我不知道如何做到这一点。寻找详细的指令将kotlin库(不是Android)发布到jCenter

+0

https://开头github上。 com/MichaelRocks/bimap/blob/master/build.gradle – Michael

回答

3

发布kotlin库到jCenter与JAva库的发布是完全一样的。

buildscript { 
    ext.kotlinVersion = '1.0.2' 

    repositories { 
    mavenCentral() 
    } 

    dependencies { 
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" 
    } 
} 

plugins { 
    id "com.jfrog.bintray" version "1.6" 
} 

apply plugin: 'kotlin' 
apply plugin: 'maven-publish' 

group '<groupId>' 
version '<version>' 
sourceCompatibility = 1.6 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" 
} 

bintray { 
    user = '<bintray user name>' 
    key = '<bintray API key>' 
    publications = ['mavenJava'] 

    pkg { 
    repo = '<repository name on bintray>' 
    name = '<artifactId>' 

    version { 
     name = project.version 
     released = new Date() 
     vcsTag = "v${project.version}" 
    } 
    } 
} 

task sourcesJar(type: Jar, dependsOn: project.classes) { 
    from sourceSets.main.allSource 
} 

task javadocJar(type: Jar, dependsOn: project.javadoc) { 
    from javadoc.destinationDir 
} 

artifacts { 
    archives sourcesJar, javadocJar 
} 

publishing { 
    publications { 
    mavenJava(MavenPublication) { 
     artifactId project.bintray.pkg.name 
     from components.java 

     artifact sourcesJar { 
     classifier = 'sources' 
     } 
     artifact javadocJar { 
     classifier = 'javadoc' 
     } 
    } 
    } 
} 

在bintray上创建一个存储库,然后打电话给./gradlew bintrayUpload。如果您不要求bintray插件发布上传的依赖项,那么您必须从您的bintray帐户手动发布它。

发布依赖关系时,您可以将其链接到您帐户的jCenter。在jCenter上发布后,您可以将其用作Android项目的常规依赖项。

+0

太棒了!这是工作。谢谢你的好回答。 –

0

迈克尔的回答是正确的。但是,如果您执行bintrayUpload,则kotlin依赖项将包含在.pom文件中。当你将你的lib包含在gradle-project中时,这会导致两次添加kotlin库。这导致DuplicateFileException。我不知道什么是错的。也许我犯了一个愚蠢的错误。但是,如果这是您的情况,您可以使用Michael的build.gradle执行gradlew构建,以生成.jar和source.jar。然后,您可以创建自己的.pom文件,并且不需要依赖关系,并手动将3个文件(jar,source.jar和.pom)部署到bintray。然后将库链接到jCenter。

例如:

生成.pom与./gradlew bintrayUpload:

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>ru.livemaster</groupId> 
    <artifactId>LongToWords</artifactId> 
    <version>0.1</version> 
    <dependencies> 
    <dependency> 
     <groupId>org.jetbrains.kotlin</groupId> 
     <artifactId>kotlin-stdlib</artifactId> 
     <version>1.0.2</version> 
     <scope>runtime</scope> 
    </dependency> 
    </dependencies> 
</project> 

你自己.pom对于没有科特林依赖性部署:

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>ru.livemaster</groupId> 
    <artifactId>LongToWords</artifactId> 
    <version>0.1</version> 
</project> 
相关问题