发布gradle artifact whitout源

时间:2015-03-25 09:30:35

标签: android gradle android-gradle

我正在为我的公司开发一个Android库。回购是私有的,但我们希望开发人员可以访问库以在他们的应用程序中使用。 据我所知,在发布@aar时,源代码同时发布。我对吗?

发布到bintray专业帐户会允许这个吗?

2 个答案:

答案 0 :(得分:0)

由于Bintray Free插件没有允许任何开源代码,我已切换到Bintray Pro帐户。我现在正在使用官方的Bintray gradle插件(classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0')。这允许我更改工件,以便不发布 sourceJar

所以我对 Bintray 有以下配置

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

bintray {
    user = properties.getProperty("bintray.user")
    key = properties.getProperty("bintray.apikey")

    configurations = ['archives']
    pkg {
        repo = "youreponame" // repo name
        userOrg = 'org'
        name = "name" // Package name
        desc = "desc"
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        publish = true
    }
}

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

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

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

@aar 已发布, javadocJar 也已发布,但不是sourceJar

答案 1 :(得分:0)

万一有人偶然发现此问题,请尝试通过maven-publish解决:

您可以定制已发布的文物。这样做可能不是最好的方法,但是以下方法适用于Gradle 5.6 +:

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.android
                // don't publish source packages
                (getArtifacts() as Set<MavenArtifact>).removeIf { it.classifier == 'sources'}
            }
        }
    }
}