使用的Nexus的Andr​​oid摇篮库的依赖关系与库依赖摇篮、关系、Nexus、Andr

2023-09-04 12:22:56 作者:喝着脉动割动脉

我交换我的项目到使用摇篮和内部Sonatype的的Nexus主办我的依赖。我的核心项目依赖于库项目A和库项目A对库项目的依赖B.

我的问题是,当我加入力霸我的主要项目中,我得到这个错误: 模块版本com.example:力霸:1.1所依赖的库,但不是库本身

我没有问题JAR依赖与同构建脚本添加库项目。我见过的人与地方成功地做这个(项目)的Andr​​oid库,但没有一个人与Maven回购这样做。

这是在摇篮中的错误还是我错误配置库建立?

核心项目生成

  buildscript {
    库{
        mavenCentral()
    }
    依赖{
        类路径com.android.tools.build:gradle:0.6.+
    }
}
应用插件:'机器人'

库{
    行家{
        URL的http://本地主机:8081 /关系/内容/资料库/发行/
    }

    行家{
        URL的http://本地主机:8081 /关系/内容/资料库/中央/
    }
}

安卓{
    compileSdkVersion 19
    buildToolsVersion19.0.0

    defaultConfig {
        的minSdkVersion 14
        targetSdkVersion 19
    }
}

依赖{
    编译com.android.support:support-v4:+
    编译(com.example:力霸:1 +')
}
 

力霸构建

  buildscript {
    库{
        mavenCentral()
    }

    依赖{
        类路径com.android.tools.build:gradle:0.6.+
    }
}

应用插件:机器人库

安卓{
    compileSdkVersion 19
    buildToolsVersion19.0.0

    defaultConfig {
        的minSdkVersion 9
        targetSdkVersion 17

        版本code =3
        VERSIONNAME =1.2
    }

    安卓{
        sourceSets {
            主要 {
                manifest.srcFile的Andr​​oidManifest.xml
                java.srcDirs = ['src'中]
                resources.srcDirs = ['src'中]
                aild.srcDirs = ['src'中]
                renderscript.srcDirs = ['src'中]
                res.srcDirs = ['水库']
                assets.srcDirs = ['资产']
            }

        }
    }

    库{
        mavenCentral()
    }

    依赖{
        编译(com.example:LibB:1 +')
    } ...
 

LibB构建

  buildscript {
    库{
        mavenCentral()
    }

    依赖{
        类路径com.android.tools.build:gradle:0.6.+
    }
}

应用插件:机器人库

安卓{
    compileSdkVersion 19
    buildToolsVersion19.0.0

    defaultConfig {
        的minSdkVersion 9
        targetSdkVersion 17

        版本code =1
        VERSIONNAME =1.0
    }

    安卓{
        sourceSets {
            主要 {
                manifest.srcFile的Andr​​oidManifest.xml
                java.srcDirs = ['src'中]
                resources.srcDirs = ['src'中]
                aild.srcDirs = ['src'中]
                renderscript.srcDirs = ['src'中]
                res.srcDirs = ['水库']
                assets.srcDirs = ['资产']
            }

        }
    }

    库{
        mavenCentral()
    }

    依赖{
    } ...
 

编辑:添加-info输出误差

  *出了什么问题:
发生问题配置项目:GradleTest。
>未能通知项目评估听众。
   >模块版本com.example:力霸:1 +依赖于库,但不是库本身
 

编辑2:添加我的本地Maven上传脚本力霸

 应用插件:行家
应用插件:签约

组=为com.example
版本= defaultConfig.versionName

配置{
    档案 {
        extendsFrom configurations.default
    }
}

签约{
    需要有{(释放)及&安培; gradle.taskGraph.hasTask(uploadArchives)}
    签署configurations.archives
}


uploadArchives {
    配置= configurations.archives
    repositories.mavenDeployer {
        beforeDeployment {MavenDeployment部署 - > signing.signPom(部署)}
        库(网址:sonatypeRepo){
            认证(用户名:sonatypeUsername,
                    密码:sonatypePassword)
        }

        pom.project {
            名称'COM,例如
            包装AAR
            说明无
            网址的https://内部github上的链接

            SCM {
                网址供应链管理:混帐@ https://开头内部github上的链接
                连接'混帐@ https://开头内部github上的链接
                developerConnection'混帐@ https://开头内部github上的链接
            }

            许可{
                许可 {
                    命名示例
                    URL示例
                    发行示例
                }
            }

            开发商{
                开发商{
                    ID示例
                    命名示例
                    电子邮件示例
                }
            }

            的groupId为com.example
            artifactId的rootProject.name //力霸
            版本defaultConfig.versionName
        }
    }
}
 

解决方案

这个问题已经摒弃了更高版本的摇篮和Android摇篮插件的。似乎刚刚被提前释放的问题。

I'm switching my project over to using Gradle and an internal SonaType Nexus for hosting my dependencies. My core project depends on library project A and library project A has a dependency on library project B.

My issue is that as soon as I add LibA to my main project I get this error: "Module version com.example:LibA:1.1 depends on libraries but is not a library itself"

I have no issues adding library projects with jar dependencies with the same build script. I have seen people doing this successfully with LOCAL (in the project) android libraries but no one doing it with maven repos.

Is this a bug in gradle or did I misconfigure the library builds?

Core Project Build

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}
apply plugin: 'android'

repositories {
    maven {
        url "http://localhost:8081/nexus/content/repositories/releases/"
    }

    maven {
        url "http://localhost:8081/nexus/content/repositories/central/"
    }
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 19
    }
}

dependencies {
    compile 'com.android.support:support-v4:+'
    compile('com.example:LibA:1.+')
}

LibA Build

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}

apply plugin: 'android-library'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 17

        versionCode = "3"
        versionName = "1.2"
    }

    android {
        sourceSets {
            main {
                manifest.srcFile 'AndroidManifest.xml'
                java.srcDirs = ['src']
                resources.srcDirs = ['src']
                aild.srcDirs = ['src']
                renderscript.srcDirs = ['src']
                res.srcDirs = ['res']
                assets.srcDirs = ['assets']
            }

        }
    }

    repositories {
        mavenCentral()
    }

    dependencies {
        compile ('com.example:LibB:1.+')
    } ...

LibB Build

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}

apply plugin: 'android-library'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 17

        versionCode = "1"
        versionName = "1.0"
    }

    android {
        sourceSets {
            main {
                manifest.srcFile 'AndroidManifest.xml'
                java.srcDirs = ['src']
                resources.srcDirs = ['src']
                aild.srcDirs = ['src']
                renderscript.srcDirs = ['src']
                res.srcDirs = ['res']
                assets.srcDirs = ['assets']
            }

        }
    }

    repositories {
        mavenCentral()
    }

    dependencies {
    } ...

Edit: Adding -info output for the error.

* What went wrong:
A problem occurred configuring project ':GradleTest'.
> Failed to notify project evaluation listener.
   > Module version com.example:LibA:1.+ depends on libraries but is not a library itself

Edit 2: Adding my local maven upload script for LibA

apply plugin: 'maven'
apply plugin: 'signing'

group = "com.example"
version = defaultConfig.versionName

configurations {
    archives {
        extendsFrom configurations.default
    }
}

signing {
    required { has("release") && gradle.taskGraph.hasTask("uploadArchives") }
    sign configurations.archives
}


uploadArchives {
    configuration = configurations.archives
    repositories.mavenDeployer {
        beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
        repository(url: sonatypeRepo) {
            authentication(userName: sonatypeUsername,
                    password: sonatypePassword)
        }

        pom.project {
            name 'com-example'
            packaging 'aar'
            description 'none'
            url 'https://internal github link'

            scm {
                url 'scm:git@https://internal github link'
                connection 'git@https://internal github link'
                developerConnection 'git@https://internal github link'
            }

            licenses {
                license {
                    name 'example'
                    url 'example'
                    distribution 'example'
                }
            }

            developers {
                developer {
                    id 'example'
                    name 'example'
                    email 'example'
                }
            }

            groupId "com.example"
            artifactId rootProject.name //LibA
            version defaultConfig.versionName
        }
    }
}

解决方案

This issue has gone away with the later versions of Gradle and the Android Gradle Plugin. Seems to have just been an early release bug.

 
精彩推荐
图片推荐