I’m trying to publish with maven-publish my library with Gitlab CI but I’m getting:
Reason: Task ':core:common:publishMyPublishPublicationToMavenLocalRepository' uses this output of task ':core:common:bundleProdReleaseAar' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed.
Possible solutions:
1. Declare task ':core:common:bundleProdReleaseAar' as an input of ':core:common:publishMyPublishPublicationToMavenLocalRepository'.
2. Declare an explicit dependency on ':core:common:bundleProdReleaseAar' from ':core:common:publishMyPublishPublicationToMavenLocalRepository' using Task#dependsOn.
3. Declare an explicit dependency on ':core:common:bundleProdReleaseAar' from ':core:common:publishMyPublishPublicationToMavenLocalRepository' using Task#mustRunAfter.
But when I’m running it locally everything works perfectly.
I was trying with these solutions https://github.com/gradle/gradle/issues/26091#issuecomment-1962863517 but it’s not working, or maybe I’m using it incorrectly?
This is my code responsible for uploading all modules as aar files into Gitlab package Registry:
apply plugin: 'maven-publish'
afterEvaluate {
if (!plugins.hasPlugin("android")) {
publishing {
publications {
myPublish(MavenPublication) {
version releaseVersion
if (plugins.hasPlugin("java")) {
from components.java
} else if (plugins.hasPlugin("android-library")) {
artifactId = "${project.name}"
artifact("$buildDir/outputs/aar/${project.getName()}-prod-release.aar")
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
def dependenciesManagementNode = asNode().appendNode('dependencyManagement').appendNode('dependencies')
configurations.implementation.allDependencies.each {
if (it.group != null && (it.name != null || "unspecified" == it.name)) {
if (it.name.endsWith("-bom")) {
def dependencyNode = dependenciesManagementNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
dependencyNode.appendNode('scope', "import")
dependencyNode.appendNode('type', "pom")
} else {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
if (it.group.contains("mflota-android")) {
dependencyNode.appendNode('version', releaseVersion)
} else {
dependencyNode.appendNode('version', it.version)
}
}
}
}
}
}
}
}
repositories {
mavenLocal()
maven {
url "https://gitlab.com/api/v4/projects/...."
credentials(HttpHeaderCredentials) {
name = "Private-Token"
value = TOKEN
}
authentication {
header(HttpHeaderAuthentication)
}
}
}
}
}
}
Maybe there is also a simpler way to do that?