我正在为我的公司开发一个Android库。回购是私有的,但我们希望开发人员可以访问库以在他们的应用程序中使用。 据我所知,在发布@aar时,源代码同时发布。我对吗?
发布到bintray专业帐户会允许这个吗?
答案 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'}
}
}
}
}