diff options
author | Julien HENRY <julien.henry@sonarsource.com> | 2015-01-06 11:40:39 +0100 |
---|---|---|
committer | Julien HENRY <julien.henry@sonarsource.com> | 2015-01-06 11:59:49 +0100 |
commit | 34cff10aba416343d259a21d1f9ca92e1188bf0e (patch) | |
tree | 3afe70f7b0d04c55e9f56b5c6da9802004818c0b | |
parent | 099f5133ceec1648c5dc96420c8cd0676e48df68 (diff) | |
download | sonarqube-34cff10aba416343d259a21d1f9ca92e1188bf0e.tar.gz sonarqube-34cff10aba416343d259a21d1f9ca92e1188bf0e.zip |
SONAR-5705 Restore internal mojo to have clean failure
-rw-r--r-- | pom.xml | 2 | ||||
-rw-r--r-- | sonar-maven-plugin/pom.xml | 67 | ||||
-rw-r--r-- | sonar-maven-plugin/src/main/java/org/sonar/maven/SonarMojo.java | 54 | ||||
-rw-r--r-- | sonar-maven-plugin/src/test/java/org/sonar/maven/SonarMojoTest.java | 65 | ||||
-rw-r--r-- | sonar-maven3-plugin/pom.xml | 19 |
5 files changed, 207 insertions, 0 deletions
@@ -24,6 +24,8 @@ <module>sonar-home</module> <module>sonar-java-api</module> <module>sonar-markdown</module> + <module>sonar-maven-plugin</module> + <module>sonar-maven3-plugin</module> <module>sonar-plugin-api</module> <module>server</module> <module>sonar-testing-harness</module> diff --git a/sonar-maven-plugin/pom.xml b/sonar-maven-plugin/pom.xml new file mode 100644 index 00000000000..8d3efef3c50 --- /dev/null +++ b/sonar-maven-plugin/pom.xml @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.codehaus.sonar</groupId> + <artifactId>sonar</artifactId> + <version>5.0-SNAPSHOT</version> + </parent> + <artifactId>sonar-maven-plugin</artifactId> + <packaging>maven-plugin</packaging> + <name>SonarQube :: Maven2 Plugin</name> + + <dependencies> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-plugin-api</artifactId> + <version>2.2.0</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>2.2.0</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-core</artifactId> + <version>2.2.0</version> + <scope>provided</scope> + </dependency> + + <!-- Test --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-all</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.easytesting</groupId> + <artifactId>fest-assert</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <skipTests>${skipBatchTests}</skipTests> + </configuration> + </plugin> + </plugins> + </build> +</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 new file mode 100644 index 00000000000..aab0a41369f --- /dev/null +++ b/sonar-maven-plugin/src/main/java/org/sonar/maven/SonarMojo.java @@ -0,0 +1,54 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 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.ArtifactVersion; +import org.apache.maven.execution.RuntimeInformation; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; + +/** + * @goal sonar + * @aggregator + */ +public final class SonarMojo extends AbstractMojo { + + /** + * @component + * @required + * @readonly + * @VisibleForTesting + */ + RuntimeInformation runtimeInformation; + + @Override + public void execute() throws MojoExecutionException { + ArtifactVersion mavenVersion = getMavenVersion(); + if (mavenVersion.getMajorVersion() < 3) { + throw new MojoExecutionException("Please use at least Maven 3.x to perform SonarQube analysis"); + } + throw new MojoExecutionException("Please update sonar-maven-plugin to at least version 2.3"); + } + + private ArtifactVersion getMavenVersion() { + return runtimeInformation.getApplicationVersion(); + } + +} 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..eb8cc4dd676 --- /dev/null +++ b/sonar-maven-plugin/src/test/java/org/sonar/maven/SonarMojoTest.java @@ -0,0 +1,65 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 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.ArtifactVersion; +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; + +public class SonarMojoTest { + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Test + public void testFailureWithMaven2() throws MojoExecutionException { + SonarMojo mojo = new SonarMojo(); + mojo.runtimeInformation = new RuntimeInformation() { + + @Override + public ArtifactVersion getApplicationVersion() { + return new DefaultArtifactVersion("2.2.1"); + } + }; + thrown.expect(MojoExecutionException.class); + thrown.expectMessage("Please use at least Maven 3.x to perform SonarQube analysis"); + mojo.execute(); + } + + @Test + public void testFailureWithMaven3() throws MojoExecutionException { + SonarMojo mojo = new SonarMojo(); + mojo.runtimeInformation = new RuntimeInformation() { + + @Override + public ArtifactVersion getApplicationVersion() { + return new DefaultArtifactVersion("3.0.5"); + } + }; + thrown.expect(MojoExecutionException.class); + thrown.expectMessage("Please update sonar-maven-plugin to at least version 2.3"); + mojo.execute(); + } + +} diff --git a/sonar-maven3-plugin/pom.xml b/sonar-maven3-plugin/pom.xml new file mode 100644 index 00000000000..5863d5bbe36 --- /dev/null +++ b/sonar-maven3-plugin/pom.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.codehaus.sonar</groupId> + <artifactId>sonar</artifactId> + <version>5.0-SNAPSHOT</version> + </parent> + <artifactId>sonar-maven3-plugin</artifactId> + <packaging>pom</packaging> + <name>SonarQube :: Maven3 Plugin</name> + <!-- Since Sonar 3.7 there is no more difference between Maven 2 and Maven 3 so relocate to Maven 2 plugin to avoid duplication --> + <distributionManagement> + <relocation> + <artifactId>sonar-maven-plugin</artifactId> + </relocation> + </distributionManagement> + +</project> |