Skip to content
This repository has been archived by the owner on Jan 25, 2021. It is now read-only.

gradle 5.1 fails #80

Closed
axet opened this issue Jan 4, 2019 · 13 comments
Closed

gradle 5.1 fails #80

axet opened this issue Jan 4, 2019 · 13 comments

Comments

@axet
Copy link

axet commented Jan 4, 2019

New issue with gradle 5.1

* What went wrong:
org.gradle.api.internal.artifacts.ivyservice.projectmodule.ProjectPublicationRegistry.registerPublication(Ljava/lang/String;Lorg/gradle/api/internal/artifacts/ivyservice/projectmodule/ProjectPublication;)V
@tprochazka
Copy link

Is this project still active?

Whole stacktrace:

java.lang.NoSuchMethodError: org.gradle.api.internal.artifacts.ivyservice.projectmodule.ProjectPublicationRegistry.registerPublication(Ljava/lang/String;Lorg/gradle/api/internal/ar                               tifacts/ivyservice/projectmodule/ProjectPublication;)V
        at org.gradle.api.plugins.AndroidMavenPlugin$9.execute(AndroidMavenPlugin.java:185)
        at org.gradle.api.plugins.AndroidMavenPlugin$9.execute(AndroidMavenPlugin.java:169)
        at org.gradle.configuration.project.DelayedConfigurationActions.execute(DelayedConfigurationActions.java:27)
        at org.gradle.configuration.project.DelayedConfigurationActions.execute(DelayedConfigurationActions.java:22)
        at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject$1.run(LifecycleProjectEvaluator.java:106)
        at org.gradle.internal.Factories$1.create(Factories.java:25)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
        at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withProjectLock(DefaultProjectStateRegistry.java:226)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:220)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:186)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:95)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:67)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:693)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:141)
        at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
        at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:62)
        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:41)
        at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuild.run(DefaultGradleLauncher.java:302)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.initialization.DefaultGradleLauncher.configureBuild(DefaultGradleLauncher.java:210)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
        at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:134)
        at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:58)
        at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:55)
        at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:82)
        at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:75)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
        at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
        at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:75)
        at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:55)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:31)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:58)
        at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
        at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:49)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:44)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:315)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:305)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:101)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:44)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:49)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:46)
        at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:78)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:46)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:59)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:36)
        at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
        at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)

@dcendents
Copy link
Owner

@tprochazka

I don't work with Android projects anymore and haven't for years.

I've always intended to keep the maintenance of the plugin, however gradle makes it harder and harder to do it. Recently they modified a lot the gradle build, mixing kotlin and groovy and it breaks everything I've done.

I might find the time and do it, but it would probably be safer to find an alternative plugin (if one exists) or do it differently (using the maven-publish plugin for example).

Whatever you find, please let me know, I'll update the main readme so other people are aware of other options.

@tprochazka
Copy link

I can look at it and send you a pull request. But you have right that for the future will be better to found a different way.

@axet
Copy link
Author

axet commented Jan 17, 2019

I wonder why maven uploadArchives target never had any issues. Maybe next plugin should be based on maven uploadArchives task. At least that where I'll start looking.

@tprochazka
Copy link

I asked also here if there is any other more official (suggested by Google team) how to do it
https://groups.google.com/forum/#!topic/adt-dev/QcLYUwXhHI8

I'm using this plugin successfully for several years already and I did not search different ways until now.

@xrubioj
Copy link

xrubioj commented Feb 25, 2019

I guess the official way of publishing will be this https://docs.gradle.org/current/userguide/publishing_overview.html -> for Maven https://docs.gradle.org/current/userguide/publishing_maven.html

From what I see, android-maven-gradle-plugin is based on https://docs.gradle.org/current/userguide/maven_plugin.html that in the documentation states that:

This chapter describes deploying artifacts to Maven repositories using the original publishing mechanism available in Gradle 1.0: in Gradle 1.3 a new mechanism for publishing was introduced. This new mechanism introduces some new concepts and features that make Gradle publishing even more powerful and is now the preferred option for publishing artifacts.

That being said, in the past I used maven-publish (new plugin) instead of maven (old one) without realizing that this was the difference, but in the project I'm working on android-maven-gradle-plugin is used (during many years already). Maybe it's time to migrate. (with all the respect to @dcendents and his work! :D ).

@axet
Copy link
Author

axet commented Feb 25, 2019

As I remember it always been there but never works with android libraries. You can see it propose 'id java-library' and fails with 'com.android.library'. Maybe you can somehow create example with 'com.android.library'

@xrubioj
Copy link

xrubioj commented Feb 25, 2019

This small library https://github.com/xrubioj/SecureControls I created is uploaded to JFrog using maven-publish and com.jfrog.bintray plugins. Maybe that's the trick, but I don't remember the details.

Let me try to create a smaller example with just maven-publish to see if it's possible with this plugin alone.

@axet
Copy link
Author

axet commented Feb 25, 2019

// https://docs.gradle.org/current/userguide/publishing_maven.html

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

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

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

def prop(String name) {
    project.hasProperty(name) ? project.getProperty(name) : null
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId 'com.github.axet'
            artifactId 'android-library'
            version android.defaultConfig.versionName

            project.afterEvaluate {
                artifact bundleReleaseAar
            }
            artifact sourcesJar
            artifact javadocJar

            versionMapping {
                usage('java-api') {
                    fromResolutionOf('runtimeClasspath')
                }
                usage('java-runtime') {
                    fromResolutionResult()
                }
            }
            
            pom {
                name = 'Android Library'
                description = 'Android Simple Widgets and Support classes.'
                url = 'https://gitlab.com/axet/android-library'
                licenses {
                    license {
                        name = 'GNU LESSER GENERAL PUBLIC LICENSE 3.0'
                        url = 'http://www.gnu.org/copyleft/lesser.html'
                    }
                }
                developers {
                    developer {
                        id = 'axet'
                        name = 'Alexey Kuznetsov'
                        email = 'axet@me.com'
                    }
                }
                scm {
                    connection = 'scm:git:https://gitlab.com/axet/android-library'
                    developerConnection = 'scm:git:https://gitlab.com/axet/android-library'
                    url = 'https://gitlab.com/axet/android-library'
                }
            }
        }
    }
    repositories {
        maven {
            def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
            def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
            url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
            credentials {
                username prop('ossrhUsername')
                password prop('ossrhPassword')
            }
        }
    }
}

signing {
    sign publishing.publications.mavenJava
}

EDIT: not listing dependencies in pom.xml

@axet
Copy link
Author

axet commented Apr 8, 2019

I found something: https://github.com/wupdigital/android-maven-publish

Just replace example above:

            project.afterEvaluate {
                artifact bundleReleaseAar
            }

with:

            from components.android

And components are:

buildscript {
    dependencies {
        classpath 'digital.wup:android-maven-publish:3.6.2'
    }
}

apply plugin: 'digital.wup.android-maven-publish' // 'gradle publishToMavenLocal' 'publish' tasks

I guess it is closed for now.

@gotev
Copy link

gotev commented Jun 7, 2019

Thank you @dcendents for all the effort you put in maintaining this plugin until now! For Gradle 5.x it's now possible to use https://github.com/sky-uk/gradle-maven-plugin which solves the problems and uses new APIs

@shaohua-deng
Copy link

I ran into the same issue while building https://github.com/material-components/material-components-android

I tried https://github.com/sky-uk/gradle-maven-plugin, got another error:
Could not set unknown property 'mavPublishToMavenLocal' for project ':lib' of type org.gradle.api.Project.

Eventually, I found the official maven plugin https://docs.gradle.org/current/userguide/maven_plugin.html#uploading_to_maven_repositories. It works for me, though there is a small issue on the web page.
plugins { id 'maven' }
should be
`apply plugin: 'maven'

My environment: Gradle 5.5.1, Kotlin 1.3.41, Apache Maven 3.6.0, Java version: 1.8.0_212, Android studio 3.4.2

My fix is here shaohua-deng/material-components-android@f163437

@tprochazka
Copy link

I started using https://github.com/wupdigital/android-maven-publish and it works very well.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants