Spencer, Thanks immensely. I'll try to force the use of Sonar 2.5 and see if that helps as per your discovery on the dependencies.
Given that Sonar 2.5 is around 3-4 months old though [1], I wonder, were the testers of [2] really working against the old version of Sonar? Also, just thinking out loud, as a user of Gradle, how will the Gradle ecosystem better cope with these interface changes over time as many Gradle versions and many Sonar versions are discovered in the wild? Will need stronger classloader isolation, perhaps? Precise plugin version specifications in our build files? [1] http://www.sonarsource.org/downloads/ [2] http://issues.gradle.org/browse/GRADLE-1467 On Wed, Apr 27, 2011 at 1:38 PM, Spencer Allain <[email protected]>wrote: > Hmm, very interesting. It appears that at least as of version 2.6 and 2.7, > Sonar now includes commons-io-2.0.1.jar. > > Sonar 2.5 depended upon commons-io 1.4. > > I suspect that if you could force Sonar 2.5 to be used, it might work fine. > > -Spencer > > --- On *Wed, 4/27/11, Spencer Allain <[email protected]>* wrote: > > > From: Spencer Allain <[email protected]> > Subject: Re: [gradle-user] Sonar Plugin throws java.lang.NoSuchMethodError > on Milestone 3 > To: [email protected] > Date: Wednesday, April 27, 2011, 2:42 PM > > > That implies that the commons-io that is getting included on the classpath > is probably the 1.4 version (the method being requested is only in > commons-io 2.0+). > > I'd wager a new version of Sonar (specifically the pmd plugin) depends upon > commons-io-2.+ is getting picked up and there might be some classloader > isolation issue as gradle still includes 1.4 for internal uses or something > else is specifying a 1.x version commons-io as a dependency. > > -Spencer > > --- On *Wed, 4/27/11, Matthew McCullough <[email protected]>* wrote: > > > From: Matthew McCullough <[email protected]> > Subject: [gradle-user] Sonar Plugin throws java.lang.NoSuchMethodError on > Milestone 3 > To: "Gradle User Mailing List" <[email protected]> > Date: Wednesday, April 27, 2011, 1:32 PM > > I saw that the earlier exception [1] I got with the Gradle Sonar > Plugin was cured in Milestone 3 so I thought I would give it a try. > I'm getting the following exception. I was never able to get it to > work in Milestone 2. Any tips from anyone that has it working? Tree, > error, build script, etc. included below. > > I'll file a ticket if this appears to be a widespread issue. I really > wanted to demo the Sonar plugin this Friday at the Reston NFJS show... > > [1] http://issues.gradle.org/browse/GRADLE-1467 > > > ----------------------- START BUILD SCRIPT --------------------------- > apply plugin: 'java' > apply plugin: 'maven' > apply plugin: 'sonar' > > group = 'com.gradleware.samples' > version = '0.0.1-SNAPSHOT' > > repositories { > mavenCentral() > } > > dependencies { > testCompile group: 'junit', name: 'junit', version: '4.8.2' > } > ----------------------- END BUILD SCRIPT --------------------------- > > > > > ----------------------- START BUILD TREE LISTING > --------------------------- > ├── build.gradle > └── src > ├── main > │ └── java > │ └── Main.java > └── test > └── java > └── TestMain.java > ----------------------- END BUILD TREE LISTING --------------------------- > > > > > ----------------------- START BUILD SCRIPT RUN --------------------------- > gradle sonar > :sonar > > FAILURE: Build aborted because of an internal error. > > * What went wrong: > Build aborted because of an unexpected internal error. Please file an > issue at: http://www.gradle.org. > > * Try: > Run with --debug option to get additional debug info. > > * Exception is: > java.lang.NoSuchMethodError: > > org.apache.commons.io.FileUtils.write(Ljava/io/File;Ljava/lang/CharSequence;)V > at > org.sonar.plugins.pmd.PmdExecutor.writeXmlReport(PmdExecutor.java:140) > at org.sonar.plugins.pmd.PmdExecutor.execute(PmdExecutor.java:83) > at org.sonar.plugins.pmd.PmdSensor.analyse(PmdSensor.java:49) > at > org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:59) > at org.sonar.batch.phases.Phases.execute(Phases.java:75) > at org.sonar.batch.ProjectBatch.execute(ProjectBatch.java:55) > at org.sonar.batch.Batch.analyzeModule(Batch.java:158) > at org.sonar.batch.Batch.analyzeModules(Batch.java:76) > at org.sonar.batch.Batch.execute(Batch.java:62) > at org.sonar.batch.Batch$execute.call(Unknown Source) > at > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120) > at > org.gradle.api.plugins.sonar.internal.SonarCodeAnalyzer.execute(SonarCodeAnalyzer.groovy:52) > at > org.gradle.api.plugins.sonar.internal.SonarCodeAnalyzer$execute.call(Unknown > Source) > at > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120) > at > org.gradle.api.plugins.sonar.Sonar$_execute_closure1.doCall(Sonar.groovy:116) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) > at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) > at > org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:273) > at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886) > at > org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66) > at > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149) > at > org.gradle.api.plugins.sonar.Sonar$_execute_closure1.doCall(Sonar.groovy) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) > at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) > at > org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:273) > at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886) > at > org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39) > at > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120) > at > org.gradle.api.plugins.sonar.Sonar.withErrorSqlLogging(Sonar.groovy:253) > at > org.gradle.api.plugins.sonar.Sonar.this$5$withErrorSqlLogging(Sonar.groovy) > at > org.gradle.api.plugins.sonar.Sonar$this$5$withErrorSqlLogging.callCurrent(Unknown > Source) > at > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149) > at org.gradle.api.plugins.sonar.Sonar.execute(Sonar.groovy:104) > at > org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:167) > at > org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:160) > at > org.gradle.execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:78) > at > org.gradle.execution.TaskNameResolvingBuildExecuter.execute(TaskNameResolvingBuildExecuter.java:113) > at > org.gradle.execution.DelegatingBuildExecuter.execute(DelegatingBuildExecuter.java:54) > at > org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:158) > at > org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:112) > at > org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:80) > at > org.gradle.launcher.ExecuteBuildAction.run(ExecuteBuildAction.java:44) > at > org.gradle.launcher.DefaultGradleLauncherActionExecuter.execute(DefaultGradleLauncherActionExecuter.java:49) > at org.gradle.launcher.DaemonMain.build(DaemonMain.java:143) > at > org.gradle.launcher.DaemonMain.doRunWithExceptionHandling(DaemonMain.java:132) > at org.gradle.launcher.DaemonMain.doRunWithLogging(DaemonMain.java:114) > at org.gradle.launcher.DaemonMain.doRun(DaemonMain.java:94) > at org.gradle.launcher.DaemonMain.access$000(DaemonMain.java:45) > at org.gradle.launcher.DaemonMain$1.handle(DaemonMain.java:75) > at > org.gradle.launcher.DaemonConnector$1.execute(DaemonConnector.java:165) > at > org.gradle.launcher.DaemonConnector$1.execute(DaemonConnector.java:161) > at > org.gradle.messaging.remote.internal.TcpIncomingConnector$Receiver.run(TcpIncomingConnector.java:102) > at > org.gradle.messaging.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:63) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:680) > BUILD FAILED > ----------------------- END: BUILD SCRIPT RUN --------------------------- > > --------------------------------------------------------------------- > To unsubscribe from this list, please visit: > > http://xircles.codehaus.org/manage_email > > >
