Публикация в хранилище BitBucket через Gradle - PullRequest
0 голосов
/ 04 января 2019

Я очень новичок в 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.

Что мне здесь не хватает?Я вызываю команду загрузки не из того места.

Любая помощь в этом отношении будет принята с благодарностью.Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...