I have a bintray repo what I uploaded my android aar library to and I am trying to link my repo to Jcenter so that other people can import it into their project.
When I click the Add to Jcenter
button in bintray I am taken to A Compose message
page, I dont do anything on this page except click the Send
button. When I click the button I get n error message in bintray saying
Failed to send a message: Package should include sources as part of the package
this is my build.gradle
for the library
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.jfrog.bintray'
apply plugin: 'maven-publish'
task androidJavadocs(type: Javadoc) {
failOnError = false
source = android.sourceSets.main.java.srcDirs
ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
classpath += files(ext.androidJar)
exclude '**/R.html', '**/R.*.html', '**/index.html'
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
publishing {
publications {
Production(MavenPublication) {
artifact("$buildDir/outputs/aar/mlcamera-release.aar")
groupId 'com.tycz'
artifactId 'mlcamera'
version '0.1.0'
artifact androidJavadocsJar
artifact androidSourcesJar
//The publication doesn't know about our dependencies, so we have to manually add them to the pom
pom.withXml {
//def dependenciesNode = asNode().appendNode('dependencies')
//Iterate over the compile dependencies (we don't want the test ones), adding a <dependency> node for each
configurations.compile.allDependencies.each {
if (it.name != 'unspecified') {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
}
}
}
}
}
bintray {
// Get Bintray credential from environment variable
user = System.getenv('BINTRAY_USER')
key = System.getenv('BINTRAY_API_KEY')
dryRun = false
override = true
publish = true
pkg {
repo = 'MLCamera'
name = project.name
userOrg = 'tyczj359'
licenses = ['Apache-2.0']
desc = 'A wrapper library for the new CameraX API and Firebase MLKit to create easier setup for MLKit usage'
vcsUrl = 'https://github.com/tyczj/MLCamera.git'
version {
name = '0.1.0'
released = new Date()
}
}
publications = ['Production']
}
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName "0.1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'com.google.firebase:firebase-ml-vision:24.0.1'
implementation 'com.google.firebase:firebase-ml-vision-barcode-model:16.0.2'
implementation 'com.google.firebase:firebase-ml-vision-object-detection-model:19.0.3'
implementation 'androidx.core:core-ktx:1.2.0'
implementation "androidx.camera:camera-core:1.0.0-beta01"
implementation "androidx.camera:camera-camera2:1.0.0-beta01"
implementation "androidx.camera:camera-view:1.0.0-alpha08"
implementation "androidx.camera:camera-lifecycle:1.0.0-beta01"
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
Can anyone tell me what the problem is?
Bintray has some preconditions to link to Jcenter.
Some are that you need a public maven repository, sources
file/s, a pom
file, etc' (more can be found at JFrog's wiki). You will need to upload those files if you want to Link to Jcenter
.
In your build.gradle
you explicitly upload the .aar
and also upload the androidSourcesJar
.
From going over the build.gradle
file it looks like you are adding the sources
, you should see error message if there are any issues with collecting the files.
My suggestion is changing the order of the from
:
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
from androidJavadocs.destinationDir
classifier = 'javadoc'
}
task androidSourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
publishing {
publications {
Production(MavenPublication) {
artifact androidJavadocsJar
artifact androidSourcesJar
groupId 'com.tycz'
artifactId 'mlcamera'
version '0.1.0'
.
.
.
You can follow gradle-bintray-plugin
README with examples.
See the section on the workaround for Android
pom
file dependencies.
You can also use these guides: