从Gradle中的uploadArchives任务中删除BuildType调试

时间:2015-03-29 22:53:44

标签: maven android-gradle

我有一个build.gradle文件来构建和上传私有Maven资源库一个Android库(.aar)脚本完全正常工作,但问题是,它在maven repo上传了我的两个buildType(调试和发布版本)我只想上传第一个版本。

这是我的剧本:

afterEvaluate { project ->
    // Generate Jar of the Javadoc
    task androidJavadocsJar(type: Jar, dependsOn: generateReleaseJavadoc) {
        classifier = 'javadoc'
        from generateReleaseJavadoc.destinationDir
    }

    // Include Javadoc Jar file in the Maven repository
    artifacts {
        archives androidJavadocsJar
    }

    // Task to upload SDK in Maven private repository
    uploadArchives {
        repositories {
            mavenDeployer {
                repository(url: "***") {
                    authentication(userName: '***', password: '***')
                }
                snapshotRepository(url: "***") {
                    authentication(userName: '***', password: '***')
                }
                pom.project {
                    artifactId '***'
                    name '***'
                    packaging 'aar'
                }
            }
        }
    }
}

我知道通过写这个defaultPublishConfig"发布"在android {}部分,但是当我这样做时,我无法在调试版本中使用我的库进行调试。我没有找到任何解决方法来停止上传调试包而不是评论和取消注释取决于我想做什么...

2 个答案:

答案 0 :(得分:3)

this可能有助于解决您的问题。基本上它默认使用发布版本。但是,您似乎可以通过;

覆盖行为
android {
    defaultPublishConfig "flavor1Debug"
}

答案 1 :(得分:2)

我按照以下方式执行此操作,并且只在打包的AAR中获取发布工件。

task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives javadocJar
    archives sourcesJar
}

uploadArchives {
    configuration = configurations.archives

    repositories {
        mavenDeployer {
            repository(url: 'http://myserver/artifactory/libs-release-local') {
                authentication(userName: artifactoryUsername, password: artifactoryPassword)
            }

            snapshotRepository(url: 'http://myserver/artifactory/libs-snapshot-local') {
                authentication(userName: artifactoryUsername, password: artifactoryPassword)
            }

            pom.project {
                name 'somelibrary'
                description 'some library'

                scm {
                    developerConnection 'repo location'
                }
            }
        }
    }
}

相反,我实际上是在寻找一种方法来发布用于调试和发布的单独工件,但是找不到它:)