#android #gradle #bintray
#Android #gradle #bintray
Вопрос:
Я пытаюсь опубликовать свою библиотеку в bintray. Но созданный файл jar содержит только папку META-INF и не содержит файлов классов.
Я следовал руководству по https://github.com/bintray/gradle-bintray-plugin#readme но никак не могу заставить его работать.
Вот как выглядит мой файл gradle.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
plugins {
id "com.jfrog.bintray" version "1.7"
}
apply plugin: 'maven-publish'
apply plugin: 'java'
allprojects {
repositories {
jcenter()
}
}
publishing {
publications {
MyPublication(MavenPublication) {
from components.java
groupId ''
artifactId ''
version '1.0'
}
}
}
bintray {
user = ''
key = ''
publications = ['MyPublication']
pkg {
repo = 'maven'
name = ''
desc = ''
licenses = ['Apache-2.0']
websiteUrl = ''
vcsUrl = ''
version {
name = '1.0'
vcsTag = '1.0'
released = new Date()
attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin']
}
}
}
Затем я запускаю gradlew bintrayUpload, и он загружается в bintray, но файлы jar содержат только папку META-INF, без файлов классов.
Ответ №1:
Мне удалось это исправить. Самым большим отличием было то, что я использовал конфигурации вместо публикаций при переходе на bintray. Ниже приведены файлы gradle, которые я настраиваю для его работы. Затем просто запустите gradlew bintrayUpload. Я получил несколько сообщений об ошибках, которые мне не удалось исправить, но их не нужно было исправлять, поскольку загрузка все равно работала.
в корневом build.gradle
plugins {
id "com.jfrog.bintray" version "1.7"
id "com.github.dcendents.android-maven" version "1.5"
}
в конце файла mylib.gradle
// bintrayUpload config
apply from: 'bintray-publish.gradle'
bintray-publish.gradle
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
// Maven group id and version for the artifact
group = LIB_GROUP_ID
version = LIB_VERSION
install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging POM_PACKAGING
groupId LIB_GROUP_ID
artifactId LIB_ARTIFACT_ID
name LIB_NAME
description LIB_DESCRIPTION
url LIB_URL
developers {
developer {
id POM_DEVELOPER_ID
name POM_DEVELOPER_NAME
}
}
scm {
url POM_SCM_URL
connection POM_SCM_CONNECTION
developerConnection POM_SCM_DEV_CONNECTION
}
licenses {
license {
name POM_LICENCE_NAME
url POM_LICENCE_URL
distribution POM_LICENCE_DIST
}
}
}
}
}
}
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath = project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
// TODO: Java doc generates errors for some reason, disable for now
//archives javadocJar
archives sourcesJar
}
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = POM_DEVELOPER_ID
key = properties.getProperty("bintray.apikey")
configurations = ['archives']
pkg {
repo = 'maven'
name = BIN_TRAY_NAME
desc = LIB_DESCRIPTION
licenses = ['Apache-2.0']
websiteUrl = LIB_URL
vcsUrl = LIB_VCS_URL
publish = true
dryRun = false
version {
name = LIB_VERSION
desc = LIB_DESCRIPTION
released = new Date()
}
}
}
gradle.properties
BIN_TRAY_NAME = MyLib
LIB_VERSION = 1.0.0
LIB_GROUP_ID = com.xxx.mylib
# The artifact name should be the same as the library module name
LIB_ARTIFACT_ID = mylib
LIB_NAME = MyLib
LIB_DESCRIPTION = My desc
LIB_URL = https://github.com/xxx/mylib
LIB_VCS_URL = https://github.com/xxx/mylib.git
POM_DEVELOPER_ID = My bintray id
POM_DEVELOPER_NAME = My bintray name
POM_SCM_URL = scm:git@github.com/xxx/mylib.git
POM_SCM_CONNECTION = scm:git@github.com/xxx/mylib.git
POM_SCM_DEV_CONNECTION = scm:git@github.com/xxx/mylib.git
POM_LICENCE_NAME = The Apache Software License, Version 2.0
POM_LICENCE_URL = http://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST=repo
POM_PACKAGING = aar
Комментарии:
1. Вы спасаете мой день.