1
votes

I have two projects (project B depends on project A) I'm trying to setup sonar and jenkins with. I'm able to build both projects successfully in Jenkins. I created two new jobs to run sonar with project A and B.

Project A has much less code than project B, A builds fine and creates a project on my sonar server (same machine as jenkins).

When I run project B, I get an exception

[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.0.1:sonar (default-cli) on project crush-root: For artifact {junit:junit:null:jar}: The version cannot be empty. -> [Help 1]

My POM does not define anything regarding sonar, like Project A. I do have JUnit defined

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version> // 4.10
            <scope>test</scope>
        </dependency>

And on my artifactory server, the sonar-maven-plugin-3.0.1.pom defines JUnit 4.12 as a dependency. Both JUnit 4.10 and 4.12 are in my artifactory.

Every module builds successfully but the maven summary shows the root pom as failure, I don't want to post the entire pom (> 1000 lines and I don't know what would be relevant since I don't have sonar-plugin config in there) but will if you think it'll help.

How do I debug this further? Should I wipe my m2 repositories on jenkins and retry? Any ideas?

Maven summary w/ exception

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] Crush Root ......................................... FAILURE [ 11.489 s]
[INFO] Crush Portal ....................................... SUCCESS [  30.362 s]
....
[INFO] Selenium ........................................... SUCCESS [  1.609 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:17 min
[INFO] Finished at: 2016-04-04T12:57:56-04:00
[INFO] Final Memory: 352M/1026M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.0.1:sonar (default-cli) on project crush-root: For artifact {junit:junit:null:jar}: The version cannot be empty. -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.0.1:sonar (default-cli) on project crush-root: For artifact {junit:junit:null:jar}: The version cannot be empty.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)
    at org.jvnet.hudson.maven3.launcher.Maven32Launcher.main(Maven32Launcher.java:132)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:330)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238)
    at jenkins.maven3.agent.Maven32Main.launch(Maven32Main.java:186)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at hudson.maven.Maven3Builder.call(Maven3Builder.java:136)
    at hudson.maven.Maven3Builder.call(Maven3Builder.java:71)
    at hudson.remoting.UserRequest.perform(UserRequest.java:120)
    at hudson.remoting.UserRequest.perform(UserRequest.java:48)
    at hudson.remoting.Request$2.run(Request.java:332)
    at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.maven.plugin.MojoExecutionException: For artifact {junit:junit:null:jar}: The version cannot be empty.
    at org.sonarsource.scanner.maven.bootstrap.ExceptionHandling.handle(ExceptionHandling.java:36)
    at org.sonarsource.scanner.maven.bootstrap.RunnerBootstrapper.execute(RunnerBootstrapper.java:81)
    at org.sonarsource.scanner.maven.SonarQubeMojo.execute(SonarQubeMojo.java:112)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 30 more
Caused by: org.apache.maven.artifact.InvalidArtifactRTException: For artifact {junit:junit:null:jar}: The version cannot be empty.
    at org.apache.maven.artifact.DefaultArtifact.validateIdentity(DefaultArtifact.java:148)
    at org.apache.maven.artifact.DefaultArtifact.<init>(DefaultArtifact.java:123)
    at org.apache.maven.bridge.MavenRepositorySystem.XcreateArtifact(MavenRepositorySystem.java:695)
    at org.apache.maven.bridge.MavenRepositorySystem.XcreateArtifact(MavenRepositorySystem.java:655)
    at org.apache.maven.bridge.MavenRepositorySystem.XcreateArtifact(MavenRepositorySystem.java:649)
    at org.apache.maven.bridge.MavenRepositorySystem.XcreateArtifact(MavenRepositorySystem.java:607)
    at org.apache.maven.bridge.MavenRepositorySystem.createArtifact(MavenRepositorySystem.java:98)
    at org.apache.maven.project.DefaultProjectBuilder.initProject(DefaultProjectBuilder.java:697)
    at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:174)
    at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:364)
    at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:284)
    at org.apache.maven.project.artifact.MavenMetadataSource.retrieveRelocatedProject(MavenMetadataSource.java:577)
    at org.apache.maven.project.artifact.MavenMetadataSource.retrieve(MavenMetadataSource.java:190)
    at org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector.recurse(DefaultLegacyArtifactCollector.java:532)
    at org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector.recurse(DefaultLegacyArtifactCollector.java:584)
    at org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector.recurse(DefaultLegacyArtifactCollector.java:584)
    at org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector.recurse(DefaultLegacyArtifactCollector.java:584)
    at org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector.collect(DefaultLegacyArtifactCollector.java:144)
    at org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector.collect(DefaultLegacyArtifactCollector.java:100)
    at org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector.collect(DefaultLegacyArtifactCollector.java:782)
    at org.apache.maven.shared.dependency.tree.DefaultDependencyTreeBuilder.buildDependencyTree(DefaultDependencyTreeBuilder.java:118)
    at org.apache.maven.shared.dependency.tree.DefaultDependencyTreeBuilder.buildDependencyTree(DefaultDependencyTreeBuilder.java:163)
    at org.sonarsource.scanner.maven.DependencyCollector.collectProjectDependencies(DependencyCollector.java:91)
    at org.sonarsource.scanner.maven.DependencyCollector.toJson(DependencyCollector.java:145)
    at org.sonarsource.scanner.maven.bootstrap.MavenProjectConverter.merge(MavenProjectConverter.java:207)
    at org.sonarsource.scanner.maven.bootstrap.MavenProjectConverter.configureModules(MavenProjectConverter.java:175)
    at org.sonarsource.scanner.maven.bootstrap.MavenProjectConverter.configure(MavenProjectConverter.java:125)
    at org.sonarsource.scanner.maven.bootstrap.RunnerBootstrapper.collectProperties(RunnerBootstrapper.java:118)
    at org.sonarsource.scanner.maven.bootstrap.RunnerBootstrapper.execute(RunnerBootstrapper.java:78)
    ... 33 more
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
1
How you define junit.version property? - agabrys
In the root POM of each project <properties> ... <junit.version>4.10</junit.version> ... </properties> - Crushing
Ok, so you have parent project, and child project. Property has been defined in root project. Does you child project has information: <parent><groupId>parent.group.id</groupId><artitacfId>parent-artifact-id</artifactId><version>parent.version</version></parent>? If 1) no - you need to add it 2) yes - can you prepare example which does not work? - agabrys
My root pom defines all the versions like my OP. Every module defines artifacts with just group and artifact id, version is inherited from the parent (the root pom of project B). Project B is not a child of Project A. My POM itself does not define the sonar-maven-plugin so I cannot produce an example that does not work other than when I run the sonar:sonar cmd in jenkins. If I build with 'clean install' goals it will build successfully. - Crushing

1 Answers

0
votes

I don't know the root cause, I broke my repository down into many repositories and the problem went away...