Я очень новичок в Gradle и Android Dev в целом.Я пытаюсь опубликовать свою библиотеку в частном хранилище битовых корзин.У меня есть 2 проекта Android, один для создания библиотеки и один для использования созданной библиотеки.
В следующем проекте библиотеки находится мой root build.gradle
apply plugin: 'com.android.library'
//apply from: './uploadLibrary.gradle'
apply from: './maven_push_library.gradle'
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
allprojects {
repositories {
flatDir {
dirs 'libs'
}
mavenCentral()
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
android {
compileSdkVersion 28
buildToolsVersion '28.0.0'
lintOptions {
abortOnError false
}
aaptOptions {
noCompress '.unity3d', '.ress', '.resource', '.obb'
}
buildTypes {
debug {
// minifyEnabled false
// useProguard false
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'
// jniDebuggable true
}
release {
// minifyEnabled false
// useProguard false
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'
// signingConfig signingConfigs.debug
}
}
packagingOptions {
doNotStrip '*/armeabi-v7a/*.so'
doNotStrip '*/x86/*.so'
}
}
и maven_push_library.gradle выглядит следующим образом:
apply plugin: 'maven'
allprojects {
repositories {
mavenCentral()
maven { url "https://raw.github.com/synergian/wagon-git/releases"}
}
}
configurations {
//deployLibrary
deployerJar
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
deployerJar "ar.com.synergian:wagon-git:0.2.5"
}
task androidJavadocs(type: Javadoc) {
failOnError false
source = android.sourceSets.main.java.sourceFiles
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
artifacts {
archives androidSourcesJar
archives androidJavadocsJar
}
task lookForArtifacts {
doLast {
def artifactName = ARTIFACT_NAME + '-' + ARTIFACT_VERSION + '.aar'
def artifactPath = ARTIFACT_PACKAGE.replace(".", "/") + "/" + ARTIFACT_NAME + "/" + ARTIFACT_VERSION + "/" + artifactName
def repositoryUrl = 'https://api.bitbucket.org/2/repositories/' + COMPANY + '/' + REPOSITORY_NAME + '/raw/releases/' + artifactPath
println("")
println("Checking if artifact already exists: " + artifactName)
println("at URL: " + repositoryUrl)
def artifactExists = urlExists(repositoryUrl)
println(artifactExists ? "existing artifact found" : "no existing artifact found")
println("")
if (urlExists(repositoryUrl)) {
throw new RuntimeException("Artifact with version " + ARTIFACT_VERSION + " already exist - not executing uploadArchives")
}
return true
}
}
//uploadArchives.dependsOn lookForArtifacts
uploadArchives {
configuration = configurations.archives
repositories.mavenDeployer {
configuration = configurations.deployerJar
repository(url: "git:releases://https://bitbucket.org/" + COMPANY + "/" + REPOSITORY_NAME + ".git")
uniqueVersion = true
pom.project {
groupId = ARTIFACT_PACKAGE
version = ARTIFACT_VERSION
artifactId = ARTIFACT_NAME
packaging = ARTIFACT_PACKAGING
}
}
}
def urlExists(String repositoryUrl) {
try {
def connection = (HttpURLConnection) new URL(repositoryUrl).openConnection()
connection.setRequestProperty("Authorization", "Basic " + getBase64EncodedCredentials())
connection.setConnectTimeout(10000)
connection.setReadTimeout(10000)
connection.setRequestMethod("HEAD")
def responseCode = connection.getResponseCode()
println("responseCode: " + responseCode)
if (responseCode == 401) {
throw new RuntimeException("Unauthorized BitBucket user - please provide valid username and password in gradle.properties file")
}
return (200 == responseCode)
} catch (IOException ignored) {
return false
}
}
def getBase64EncodedCredentials() {
def s = USERNAME + ":" + PASSWORD;
return s.bytes.encodeBase64().toString()
}
ниже приведены мои gradle.properties
org.gradle.jvmargs=-Xmx4096M
ARTIFACT_VERSION=1.0.0
ARTIFACT_NAME=TestBuild
ARTIFACT_PACKAGE=com.Test.TestBuild
ARTIFACT_PACKAGING=aar
COMPANY=DaipayanRoy
REPOSITORY_NAME=maven_repository
POM_NAME=TestBuild
POM_PACKAGING=aar
POM_DESCRIPTION=This is test build
POM_URL= https://bitbucket.org/DaipayanRoy/maven_repository
GROUP=com.Test.TestBuild
POM_ARTIFACT_ID=TestBuild
VERSION_NAME=1.0.0
теперь, когда я звоню ./gradlew --info uploadArchives, он говорит, что не смог отправить некоторые ссылки на 'https://bitbucket.org/DaipayanRoy/maven_repository.git' Обновления были отклонены, поскольку кончик вашей текущей ветки находится за своим удаленным аналогом.
Вызов «git pull» говорит «в курсе».У меня уже есть частный репозиторий под названием «maven_repository» в Bitbucket с веткой под названием «Releases», установленной в качестве основной ветви.Эта ветвь содержит только файл README.md.
Вышеуказанные файлы находятся в проекте библиотеки, который находится в другом хранилище в Bitbucket.
Что мне здесь не хватает?Я вызываю команду загрузки не из того места.
Любая помощь в этом отношении будет принята с благодарностью.Заранее спасибо.