From 4c3993eb0204b526be90108a1185e691596ef06c Mon Sep 17 00:00:00 2001 From: Julien HENRY Date: Thu, 23 Oct 2014 18:28:13 +0200 Subject: SONAR-5705 Drop support of Maven 2 --- sonar-maven-plugin/pom.xml | 76 ------- .../java/org/sonar/maven/ExceptionHandling.java | 43 ---- .../src/main/java/org/sonar/maven/SonarMojo.java | 220 --------------------- .../org/sonar/maven/ExceptionHandlingTest.java | 75 ------- .../test/java/org/sonar/maven/SonarMojoTest.java | 46 ----- .../org/sonar/runner/impl/RunnerException.java | 26 --- 6 files changed, 486 deletions(-) delete mode 100644 sonar-maven-plugin/pom.xml delete mode 100644 sonar-maven-plugin/src/main/java/org/sonar/maven/ExceptionHandling.java delete mode 100644 sonar-maven-plugin/src/main/java/org/sonar/maven/SonarMojo.java delete mode 100644 sonar-maven-plugin/src/test/java/org/sonar/maven/ExceptionHandlingTest.java delete mode 100644 sonar-maven-plugin/src/test/java/org/sonar/maven/SonarMojoTest.java delete mode 100644 sonar-maven-plugin/src/test/java/org/sonar/runner/impl/RunnerException.java (limited to 'sonar-maven-plugin') diff --git a/sonar-maven-plugin/pom.xml b/sonar-maven-plugin/pom.xml deleted file mode 100644 index 06e8f96152d..00000000000 --- a/sonar-maven-plugin/pom.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - 4.0.0 - - org.codehaus.sonar - sonar - 5.0-SNAPSHOT - - sonar-maven-plugin - maven-plugin - SonarQube :: Maven2 Plugin - - - - org.apache.maven.shared - maven-dependency-tree - - - org.codehaus.sonar.runner - sonar-runner-api - - - com.google.code.gson - gson - - - org.apache.maven - maven-plugin-api - provided - - - org.apache.maven - maven-core - provided - - - org.apache.maven - maven-project - provided - - - - - junit - junit - test - - - org.hamcrest - hamcrest-all - test - - - org.mockito - mockito-core - test - - - org.easytesting - fest-assert - test - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - ${skipBatchTests} - - - - - diff --git a/sonar-maven-plugin/src/main/java/org/sonar/maven/ExceptionHandling.java b/sonar-maven-plugin/src/main/java/org/sonar/maven/ExceptionHandling.java deleted file mode 100644 index c5d0f71ab4d..00000000000 --- a/sonar-maven-plugin/src/main/java/org/sonar/maven/ExceptionHandling.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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.plugin.MojoExecutionException; -import org.apache.maven.plugin.logging.Log; - -class ExceptionHandling { - - private ExceptionHandling(){ - // Hide public constructor - } - - static RuntimeException handle(Exception e, Log log) throws MojoExecutionException { - Throwable source = e; - if ("org.sonar.runner.impl.RunnerException".equals(e.getClass().getName()) && e.getCause() != null) { - source = e.getCause(); - } - log.error(source.getMessage()); - throw new MojoExecutionException(source.getMessage(), source); - } - - static RuntimeException handle(String message, Log log) throws MojoExecutionException { - return handle(new MojoExecutionException(message), log); - } -} 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 deleted file mode 100644 index 5a2c09acb45..00000000000 --- a/sonar-maven-plugin/src/main/java/org/sonar/maven/SonarMojo.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * 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.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; -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.project.MavenProject; -import org.apache.maven.project.MavenProjectBuilder; -import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder; -import org.sonar.runner.api.EmbeddedRunner; -import org.sonar.runner.api.RunnerProperties; -import org.sonar.runner.api.ScanProperties; - -import java.io.File; -import java.io.IOException; - -/** - * @goal sonar - * @aggregator - * @requiresDependencyResolution test - * @deprecated Only kept for backward compatibility with old version of SQ Maven plugin - */ -@Deprecated -public final class SonarMojo extends AbstractMojo { - - /** - * @parameter property="session" - * @required - * @readonly - */ - private MavenSession session; - - /** - * @parameter property="project" - * @required - * @readonly - */ - private MavenProject project; - - /** - * @component - * @required - */ - private LifecycleExecutor lifecycleExecutor; - - /** - * The artifact factory to use. - * - * @component - * @required - * @readonly - */ - private ArtifactFactory artifactFactory; - - /** - * The artifact repository to use. - * - * @parameter property="localRepository" - * @required - * @readonly - */ - private ArtifactRepository localRepository; - - /** - * The artifact metadata source to use. - * - * @component - * @required - * @readonly - */ - private ArtifactMetadataSource artifactMetadataSource; - - /** - * The artifact collector to use. - * - * @component - * @required - * @readonly - */ - private ArtifactCollector artifactCollector; - - /** - * The dependency tree builder to use. - * - * @component - * @required - * @readonly - */ - private DependencyTreeBuilder dependencyTreeBuilder; - - /** - * @component - * @required - * @readonly - */ - private MavenProjectBuilder projectBuilder; - - /** - * @component - * @required - * @readonly - * @VisibleForTesting - */ - RuntimeInformation runtimeInformation; - - @Override - public void execute() throws MojoExecutionException { - ArtifactVersion mavenVersion = getMavenVersion(); - if (mavenVersion.getMajorVersion() == 2 && mavenVersion.getMinorVersion() < 2) { - ExceptionHandling.handle("Please use at least Maven 2.2.x to perform SonarQube analysis (current version is " + mavenVersion.toString() + ")", getLog()); - } - - try { - EmbeddedRunner runner = EmbeddedRunner.create() - .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 - .addProperties(session.getUserProperties()); - String encoding = getSourceEncoding(project); - if (encoding != null) { - runner.setProperty(ScanProperties.PROJECT_SOURCE_ENCODING, encoding); - } - runner - .setProperty(ScanProperties.PROJECT_KEY, getSonarKey(project)) - .setProperty(RunnerProperties.WORK_DIR, getSonarWorkDir(project).getAbsolutePath()) - .setProperty(ScanProperties.PROJECT_BASEDIR, project.getBasedir().getAbsolutePath()) - .setProperty(ScanProperties.PROJECT_VERSION, toString(project.getVersion())) - .setProperty(ScanProperties.PROJECT_NAME, toString(project.getName())) - .setProperty(ScanProperties.PROJECT_DESCRIPTION, toString(project.getDescription())) - .setProperty(ScanProperties.PROJECT_SOURCE_DIRS, "."); - // Exclude log implementation to not conflict with Maven 3.1 logging impl - runner.mask("org.slf4j.LoggerFactory") - // Include slf4j Logger that is exposed by some Sonar components - .unmask("org.slf4j.Logger") - .unmask("org.slf4j.ILoggerFactory") - // Exclude other slf4j classes - // .unmask("org.slf4j.impl.") - .mask("org.slf4j.") - // Exclude logback - .mask("ch.qos.logback.") - .mask("org.sonar.") - // Include everything else - .unmask(""); - runner.addExtensions(session, getLog(), lifecycleExecutor, artifactFactory, localRepository, artifactMetadataSource, artifactCollector, - dependencyTreeBuilder, projectBuilder); - if (getLog().isDebugEnabled()) { - runner.setProperty("sonar.verbose", "true"); - } - runner.execute(); - } catch (Exception e) { - throw ExceptionHandling.handle(e, getLog()); - } - } - - private ArtifactVersion getMavenVersion() { - return runtimeInformation.getApplicationVersion(); - } - - public static String toString(Object obj) { - return obj == null ? "" : obj.toString(); - } - - public static String getSourceEncoding(MavenProject pom) { - return pom.getProperties().getProperty("project.build.sourceEncoding"); - } - - public static String getSonarKey(MavenProject pom) { - return new StringBuilder().append(pom.getGroupId()).append(":").append(pom.getArtifactId()).toString(); - } - - public static File getSonarWorkDir(MavenProject pom) { - return new File(getBuildDir(pom), "sonar"); - } - - private static File getBuildDir(MavenProject pom) { - return resolvePath(pom.getBuild().getDirectory(), pom.getBasedir()); - } - - static File resolvePath(String path, File basedir) { - if (path != null) { - File file = new File(path); - if (!file.isAbsolute()) { - try { - file = new File(basedir, path).getCanonicalFile(); - } catch (IOException e) { - throw new IllegalStateException("Unable to resolve path '" + path + "'", e); - } - } - return file; - } - return null; - } - -} diff --git a/sonar-maven-plugin/src/test/java/org/sonar/maven/ExceptionHandlingTest.java b/sonar-maven-plugin/src/test/java/org/sonar/maven/ExceptionHandlingTest.java deleted file mode 100644 index 78db2d14675..00000000000 --- a/sonar-maven-plugin/src/test/java/org/sonar/maven/ExceptionHandlingTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * 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.plugin.MojoExecutionException; -import org.apache.maven.plugin.logging.Log; -import org.junit.Test; -import org.sonar.runner.impl.RunnerException; - -import static org.fest.assertions.Assertions.assertThat; -import static org.fest.assertions.Fail.fail; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; - -public class ExceptionHandlingTest { - - private static final String MESSAGE = "the error message"; - - @Test - public void should_log_message_and_throw_exception() throws Exception { - Log log = mock(Log.class); - try { - ExceptionHandling.handle(MESSAGE, log); - fail(); - } catch (MojoExecutionException e) { - assertThat(e.getMessage()).isEqualTo(MESSAGE); - verify(log).error(MESSAGE); - } - } - - @Test - public void should_log_message_and_rethrow_exception() throws Exception { - Log log = mock(Log.class); - IllegalStateException cause = new IllegalStateException(MESSAGE); - try { - ExceptionHandling.handle(cause, log); - fail(); - } catch (MojoExecutionException e) { - assertThat(e.getMessage()).isEqualTo(MESSAGE); - assertThat(e.getCause()).isSameAs(cause); - verify(log).error(MESSAGE); - } - } - - @Test - public void should_hide_sonar_runner_stacktrace() throws Exception { - Log log = mock(Log.class); - IllegalStateException cause = new IllegalStateException(MESSAGE); - try { - ExceptionHandling.handle(new RunnerException(cause), log); - fail(); - } catch (MojoExecutionException e) { - assertThat(e.getMessage()).isEqualTo(MESSAGE); - assertThat(e.getCause()).isSameAs(cause); - verify(log).error(MESSAGE); - } - } -} 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 deleted file mode 100644 index 7b1be21b330..00000000000 --- a/sonar-maven-plugin/src/test/java/org/sonar/maven/SonarMojoTest.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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.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(); - } -} diff --git a/sonar-maven-plugin/src/test/java/org/sonar/runner/impl/RunnerException.java b/sonar-maven-plugin/src/test/java/org/sonar/runner/impl/RunnerException.java deleted file mode 100644 index 7208f75891d..00000000000 --- a/sonar-maven-plugin/src/test/java/org/sonar/runner/impl/RunnerException.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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.runner.impl; - -public class RunnerException extends RuntimeException { - public RunnerException(Throwable throwable) { - super(throwable); - } -} -- cgit v1.2.3