我有一个包含多个模块的Android项目,我想将它们发布到自托管的maven repo。我之前已经在各个模块中提供了发布代码,并且工作得很好。我现在尝试将发布代码移动到项目build.gradle
中,以便可以重用这些代码。我的各个模块中的代码是:
afterEvaluate {
// To avoid publishing the applications inside the project...
if (!plugins.hasPlugin("android")) {
publishing {
publications {
mavenAar(MavenPublication) {
artifactId "$project.name"
from components.release
}
}
repositories {
.... My repo details and credentials .......
}
}
}
}
字符串
一切都很顺利当我将代码移动到项目build.gradle
时,如下所示:
subprojects {
apply plugin: 'maven-publish'
afterEvaluate {
// To avoid publishing of the applications inside the project ..
if (!plugins.hasPlugin("android")) {
publishing {
publications {
mavenAar(MavenPublication) {
artifactId "$project.name"
from components.release
}
}
repositories {
.... My reop details and creddentials .....
}
}
}
}
}
型
我在运行publish
任务时开始收到以下错误:
A problem occurred configuring project ':mymodule'.
> Could not get unknown property 'release' for SoftwareComponentInternal set of type org.gradle.api.internal.component.DefaultSoftwareComponentContainer.
型
有人能指出这里的问题吗?
8条答案
按热度按时间h5qlskok1#
检查你的项目级build.gradle并确保gradle类路径是
字符串
这对我很有效。
正如其他人提到的,您还可以通过以下方式检查组件名称:
型
h9vpoimq2#
我在更新Jitpack的AGP后遇到了这个问题。MavenPublication块和
components.release
行似乎都使用了构建变体名称。因此,如果你有一个标准的调试和发布变体,它看起来会像这样:字符串
但是如果你有一个非release的构建变体,你需要使用它:
型
gudnpqoy3#
这对我很有效,我在评估后添加了另一个***。
字符串
1zmg4dgp4#
这两个答案对我都不起作用。如果我不尝试反向工程,而不是阅读文档,我就不会是我自己:)
事实证明,当我们构建
com.android.library
时,这个components.release
工作得很好,但当使用com.android.application
插件构建时就不那么好了。如果gradle说它没有release
组件,那么让我们看看它有哪些组件:字符串
执行
./gradlew :app:comps
将打印以下内容:型
如果在
android.buildTypes {}
闭包中我定义了另一个类型,比如freebie
,./gradlew :app:comps
将打印以下内容:型
看起来gradle插件使用了你的构建变体的名称,并从中创建了两个变体:
${variant}_apk
和${variant}_aab
。现在要解决最初的问题,替换
型
与
型
或者使用
_aab
。如果您使用的是release
以外的其他变体,请相应地替换from components.release_apk
部件。等级:7.3
AndroidStudio:2021.2.1金丝雀4(花栗鼠)
zf2sa74q5#
确保在
root/build.gradle
和root/<library_name>/build.gradle
中使用的是com.android.tools.build:gradle:4.1.2
或更高版本3.6。然后确保这两个插件都在root/<library_name>/build.gradle
中声明如下:字符串
然后你可以使用组件。释放
您可以阅读此文档https://developer.android.com/studio/build/maven-publish-plugin#groovy了解更多信息
jobtbby36#
我犯了同样的错误。用下面的代码解决:
字符串
似乎您必须指定AAR文件的确切路径。你可以在这个答案中找到更多细节:https://stackoverflow.com/a/60936807/971355
pengsaosao7#
遇到了类似的错误,并通过在
afterEvaluate
之前应用android插件来解决,所以看起来像这样:字符串
lnxxn5zx8#
我得到了同样的错误,解决了它与下面的代码.
实际的更改是将
from components.release
行 Package 在一个附加的afterEvaluate块中。字符串