将 kotlin 库(不是 Android)发布到 jCenter
Publish kotlin library (Not Android) to jCenter
我有用 Kotlin 编写的 Intellij Idea 2016.1 gradle-应用程序(不是 Android)。我需要将它放在 jCenter 中并作为依赖项添加到 Android-应用程序。我找不到有关它的任何信息。所有参考均指的是 Android 项目。我不知道如何做到这一点。寻找详细说明
将 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 帐户手动发布它。
依赖项发布后,您可以从您的帐户 link 将其 jCenter
。在 jCenter
上发布后,您可以将其用作 Android 项目的常规依赖项。
迈克尔的回答是正确的。但是如果执行 bintrayUpload,kotlin 依赖项将包含到 .pom 文件中。当您将库包含在 gradle-project 中时,这会导致添加两次 kotlin 库。这会导致 DuplicateFileException。我不知道出了什么问题。也许我犯了一些愚蠢的错误。但是如果是这种情况,您可以使用 Michael 的 build.gradle 执行 gradlew build 来生成 .jar 和 source.jar。然后您可以创建自己的没有依赖项的 .pom 文件,并手动将 3 个文件(jar、source.jar 和 .pom)部署到 bintray。然后link库到jCenter。
例如:
使用 ./gradlew bintrayUpload 生成的 .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>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>1.0.2</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</project>
您自己的 .pom,用于在没有 kotlin 依赖项的情况下进行部署:
<?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>
我有用 Kotlin 编写的 Intellij Idea 2016.1 gradle-应用程序(不是 Android)。我需要将它放在 jCenter 中并作为依赖项添加到 Android-应用程序。我找不到有关它的任何信息。所有参考均指的是 Android 项目。我不知道如何做到这一点。寻找详细说明
将 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 帐户手动发布它。
依赖项发布后,您可以从您的帐户 link 将其 jCenter
。在 jCenter
上发布后,您可以将其用作 Android 项目的常规依赖项。
迈克尔的回答是正确的。但是如果执行 bintrayUpload,kotlin 依赖项将包含到 .pom 文件中。当您将库包含在 gradle-project 中时,这会导致添加两次 kotlin 库。这会导致 DuplicateFileException。我不知道出了什么问题。也许我犯了一些愚蠢的错误。但是如果是这种情况,您可以使用 Michael 的 build.gradle 执行 gradlew build 来生成 .jar 和 source.jar。然后您可以创建自己的没有依赖项的 .pom 文件,并手动将 3 个文件(jar、source.jar 和 .pom)部署到 bintray。然后link库到jCenter。
例如:
使用 ./gradlew bintrayUpload 生成的 .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>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>1.0.2</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</project>
您自己的 .pom,用于在没有 kotlin 依赖项的情况下进行部署:
<?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>