发布 gradle 个没有来源的工件
Publish gradle artifact whitout source
我正在为我的公司开发 Android 图书馆。该存储库是私有的,但我们希望开发人员可以访问该库以在他们的应用程序中使用。
据我所知,发布@aar 时,源代码会同时发布。我对吗?
发布到 bintray Professional 帐户是否允许这样做?
我已经切换到 Bintray Pro 帐户,因为 Bintray 免费插件不允许私有源代码。我现在正在使用官方 Bintray gradle 插件 (classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
)。这允许我更改 artifacts 并且不发布 sourceJar.
所以我有以下 config for 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。
如果有人偶然发现这个问题,请尝试用 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'}
}
}
}
}
我正在为我的公司开发 Android 图书馆。该存储库是私有的,但我们希望开发人员可以访问该库以在他们的应用程序中使用。 据我所知,发布@aar 时,源代码会同时发布。我对吗?
发布到 bintray Professional 帐户是否允许这样做?
我已经切换到 Bintray Pro 帐户,因为 Bintray 免费插件不允许私有源代码。我现在正在使用官方 Bintray gradle 插件 (classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
)。这允许我更改 artifacts 并且不发布 sourceJar.
所以我有以下 config for 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。
如果有人偶然发现这个问题,请尝试用 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'}
}
}
}
}