Локальная библиотека зависимостей Android Gradle с использованием Nexus

Я работаю над AndroidStudio, и у меня есть проект, структура которого:

МойПроект1

  • |--- Общий модуль
  • |--- ModuleSocket(зависимость ModuleCommon)
  • |--- МодульДемо

Я хочу загрузить ModuleCommon и ModuleDemo в свою локальную службу нексуса, я буду использовать ModuleCommon или (и) ModuleSocket в другом проекте, который мой сценарий градации (фрагмент):

  • ModuleCommon — build.gradle:
apply plugin: 'maven'
def isReleaseBuild() {
    return VERSION_NAME.contains("SNAPSHOT") == false
}
def getRepositoryUsername() {
    return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}
def getRepositoryPassword() {
    return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}
afterEvaluate { project ->
    uploadArchives {
        repositories {
            mavenDeployer {
                pom.groupId = GROUP
                pom.artifactId = "ModuleCommon"
                pom.version = "0.0.1"
                repository(url: RELEASE_REPOSITORY_URL) {
                    authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
                }
                snapshotRepository(url: SNAPSHOT_REPOSITORY_URL) {
                    authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
                }
            }
        }
    }
    task androidJavadocs(type: Javadoc) {
        options.encoding = "UTF-8"
        source = android.sourceSets.main.java.srcDirs
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    }
    task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
        classifier = 'javadoc'
        from androidJavadocs.destinationDir
    }
    task androidSourcesJar(type: Jar) {
        classifier = 'sources'
        from android.sourceSets.main.java.sourceFiles
    }
    artifacts {
        archives androidSourcesJar
        archives androidJavadocsJar
    }
}
  • ModuleSocket - build.gradle: этот фрагмент аналогичен ModuleCommon - build.gradle, за исключением зависимостей:
dependencies {

    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile ('xmrk:rkandroid:0.0.1')
}
  • МойПроект1 - build.gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        repositories {
            maven {url "http://192.168.1.34:8081/nexus/content/repositories/releases"}
            maven {url "http://192.168.1.34:8081/nexus/content/repositories/snapshots"}
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

    }
}

allprojects {
    repositories {
        jcenter()
        repositories {
            maven {url "http://localhost:8081/nexus/content/repositories/releases"}
            maven {url "http://localhost:8081/nexus/content/repositories/snapshots"}
        }
    }
}
  • град.свойства:
GROUP=xmrk

SNAPSHOT_REPOSITORY_URL=http://localhost:8081/nexus/content/repositories/snapshots/
RELEASE_REPOSITORY_URL=http://localhost:8081/nexus/content/repositories/releases/

NEXUS_USERNAME=myname
NEXUS_PASSWORD=mypassword

С помощью приведенного выше сценария я успешно загружаю свою библиотеку ModuleCommon и ModuleSocket на свой сервер связи, но когда я использую ModuleSocket, я получаю сообщение об ошибке:

Ошибка: не удалось устранить: xmrk:ModuleCommon:unspecified Открыть файл
Показать в диалоговом окне структуры проекта


Кто-нибудь спасет меня? Я чувствую, что мой случай похож на зависимость библиотеки Android Gradle с зависимостью от библиотеки с использованием Nexus, но есть небольшая разница и ошибка diff.


person Eraise    schedule 02.02.2016    source источник
comment
Вы проверили репозиторий Nexus, существует ли xmrk:rkandroid?   -  person Gabriele Mariotti    schedule 02.02.2016
comment
@GabrieleMariotti существует, и я могу его использовать, я редактирую зависимости, чтобы использовать его, и мне это удается   -  person Eraise    schedule 02.02.2016
comment
проверьте файл pom. В частности, проверьте версию артефакта, если она 0.0.1 или не указана.   -  person Gabriele Mariotti    schedule 02.02.2016
comment
‹проект xmlns=maven.apache.org/POM/4.0.0 xmlns:xsi =w3.org/2001/XMLSchema-instance xsi:schemaLocation=maven.apache.org/POM/4.0.0 maven.apache.org/xsd/maven-4.0.0.xsd› ‹modelVersion›4.0.0‹/modelVersion › ‹groupId›xmrk‹/groupId› ‹artifactId›ModuleSocket‹/artifactId› ‹version›0.0.1‹/версия› ‹packaging›aar‹/packaging› ‹dependency› ‹dependency› ‹groupId›xmrk‹/groupId› ‹ ArtifactId›ModuleCommon‹/artifactId› ‹version›0.+‹/version› ‹scope›compile‹/scope› ‹/dependency› ‹/dependencies› ‹/project› Является ли мой POM в нексусе ModuleSocket, кажется, все в порядке   -  person Eraise    schedule 02.02.2016
comment
Проверьте pom внутри артефакта rkandroid. Проверьте правильность зависимости от ModuleSocket.   -  person Gabriele Mariotti    schedule 02.02.2016
comment
@GabrieleMariotti Я могу использовать ModuleCommon в другом проекте, и я могу использовать ModuleSocket через проект компиляции (':ModuleSocket') в ModuleDemo, но я не могу отключить его от нексуса   -  person Eraise    schedule 02.02.2016
comment
Я не говорю этого. xmrk:ModuleCommon:unspecified означает, что вы используете зависимость с ModuleCommon в качестве зависимости. В вашем build.gradle вы используете компиляцию ('xmrk:rkandroid:0.0.1'). Возможно, ошибка находится внутри файла pom модуля rkandroid, который может иметь неправильную зависимость с ModuleCommon: unspecified.   -  person Gabriele Mariotti    schedule 02.02.2016
comment
Извините, rkandroid == ModuleCommon, это моя ошибка, введенная выше команды. pom генерируется автоматически, когда я запускаю модуль uploadArchives.   -  person Eraise    schedule 02.02.2016
comment
@GabrieleMariotti У вас есть гильдия или демо, как у моего проекта?   -  person Eraise    schedule 02.02.2016
comment
Да, у меня есть такая ситуация. Проблема, которая может возникнуть, заключается в том, что файл pom не имеет номера версии в зависимости.   -  person Gabriele Mariotti    schedule 02.02.2016
comment
@GabrieleMariotti Orz ... Я снова проверяю свой проект, pom ModuleSocket, версия ModuleCommon 0.+, и я проверил свои репозитории Nexus, ModuleCommon 0.0.1 существует. И я могу использовать ModuleCommon через компиляцию «xmrk:ModuleCommon:0.0.1» или компиляцию «xmrk:ModuleCommon:0.+»   -  person Eraise    schedule 02.02.2016
comment
@GabrieleMariotti Я решаю, удаляя C:\Users[MyAccount]\.gradle\caches. благодарю вас.   -  person Eraise    schedule 05.02.2016


Ответы (1)


Я решаю этот вопрос, удаляя кеш в C:\Users[MyUsername].gradle\caches.

Думает @Gabriele

person Eraise    schedule 05.02.2016