diff options
author | Julien HENRY <julien.henry@sonarsource.com> | 2013-07-15 16:17:21 +0200 |
---|---|---|
committer | Julien HENRY <julien.henry@sonarsource.com> | 2013-07-15 16:17:46 +0200 |
commit | a2eee9d6cd812e3a0a37491bc7124add940d4995 (patch) | |
tree | 93aa2caefb56ff86dfcefba3115916f8083d50ac /sonar-maven-plugin | |
parent | 9f2fd2ac35aedde9c244f76bd948bf5011b9cbb9 (diff) | |
download | sonarqube-a2eee9d6cd812e3a0a37491bc7124add940d4995.tar.gz sonarqube-a2eee9d6cd812e3a0a37491bc7124add940d4995.zip |
SONAR-4493 End of support of Maven 2.0 and 2.1
Diffstat (limited to 'sonar-maven-plugin')
-rw-r--r-- | sonar-maven-plugin/pom.xml | 17 | ||||
-rw-r--r-- | sonar-maven-plugin/src/main/java/org/sonar/maven/SonarMojo.java | 16 | ||||
-rw-r--r-- | sonar-maven-plugin/src/test/java/org/sonar/maven/SonarMojoTest.java | 46 |
3 files changed, 74 insertions, 5 deletions
diff --git a/sonar-maven-plugin/pom.xml b/sonar-maven-plugin/pom.xml index f4cdd7cd1a1..8b7e3a38d26 100644 --- a/sonar-maven-plugin/pom.xml +++ b/sonar-maven-plugin/pom.xml @@ -35,5 +35,22 @@ <artifactId>maven-project</artifactId> <scope>provided</scope> </dependency> + + <!-- Test --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-all</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.easytesting</groupId> + <artifactId>fest-assert</artifactId> + <scope>test</scope> + </dependency> </dependencies> </project> diff --git a/sonar-maven-plugin/src/main/java/org/sonar/maven/SonarMojo.java b/sonar-maven-plugin/src/main/java/org/sonar/maven/SonarMojo.java index dc1c764a51e..14213720c23 100644 --- a/sonar-maven-plugin/src/main/java/org/sonar/maven/SonarMojo.java +++ b/sonar-maven-plugin/src/main/java/org/sonar/maven/SonarMojo.java @@ -23,6 +23,7 @@ import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.metadata.ArtifactMetadataSource; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.ArtifactCollector; +import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.execution.MavenSession; import org.apache.maven.execution.RuntimeInformation; import org.apache.maven.lifecycle.LifecycleExecutor; @@ -122,13 +123,18 @@ public final class SonarMojo extends AbstractMojo { * @component * @required * @readonly + * @VisibleForTesting */ - private RuntimeInformation runtimeInformation; + RuntimeInformation runtimeInformation; public void execute() throws MojoExecutionException, MojoFailureException { + ArtifactVersion mavenVersion = getMavenVersion(); + if (mavenVersion.getMajorVersion() == 2 && mavenVersion.getMinorVersion() < 2) { + throw new MojoExecutionException("Please use at least Maven 2.2.x to perform SonarQube analysis (current version is " + mavenVersion.toString() + ")"); + } EmbeddedRunner runner = EmbeddedRunner.create() - .setApp("Maven", getMavenVersion()) + .setApp("Maven", mavenVersion.toString()) .addProperties(session.getExecutionProperties()) .addProperties(project.getModel().getProperties()) // Add user properties (ie command line arguments -Dsonar.xxx=yyyy) in last position to override all other @@ -159,15 +165,15 @@ public final class SonarMojo extends AbstractMojo { // Include everything else .unmask(""); runner.addExtensions(session, getLog(), lifecycleExecutor, artifactFactory, localRepository, artifactMetadataSource, artifactCollector, - dependencyTreeBuilder, projectBuilder); + dependencyTreeBuilder, projectBuilder); if (getLog().isDebugEnabled()) { runner.setProperty("sonar.verbose", "true"); } runner.execute(); } - private String getMavenVersion() { - return runtimeInformation.getApplicationVersion().toString(); + private ArtifactVersion getMavenVersion() { + return runtimeInformation.getApplicationVersion(); } public static String toString(Object obj) { diff --git a/sonar-maven-plugin/src/test/java/org/sonar/maven/SonarMojoTest.java b/sonar-maven-plugin/src/test/java/org/sonar/maven/SonarMojoTest.java new file mode 100644 index 00000000000..83a52b49548 --- /dev/null +++ b/sonar-maven-plugin/src/test/java/org/sonar/maven/SonarMojoTest.java @@ -0,0 +1,46 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2013 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.maven; + +import org.apache.maven.artifact.versioning.DefaultArtifactVersion; +import org.apache.maven.execution.RuntimeInformation; +import org.apache.maven.plugin.MojoExecutionException; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class SonarMojoTest { + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Test + public void shouldFailWithOldMavenVersion() throws Exception { + SonarMojo mojo = new SonarMojo(); + mojo.runtimeInformation = mock(RuntimeInformation.class); + when(mojo.runtimeInformation.getApplicationVersion()).thenReturn(new DefaultArtifactVersion("2.0.11")); + thrown.expect(MojoExecutionException.class); + thrown.expectMessage("Please use at least Maven 2.2.x to perform SonarQube analysis (current version is 2.0.11)"); + mojo.execute(); + } +} |