diff options
Diffstat (limited to 'it/it-plugins/project-builder-plugin/src')
3 files changed, 96 insertions, 0 deletions
diff --git a/it/it-plugins/project-builder-plugin/src/main/java/CreateSubProjects.java b/it/it-plugins/project-builder-plugin/src/main/java/CreateSubProjects.java new file mode 100644 index 00000000000..7f122494690 --- /dev/null +++ b/it/it-plugins/project-builder-plugin/src/main/java/CreateSubProjects.java @@ -0,0 +1,58 @@ +import org.sonar.api.batch.bootstrap.ProjectBuilder; +import org.sonar.api.batch.bootstrap.ProjectDefinition; +import org.sonar.api.batch.bootstrap.ProjectReactor; +import org.sonar.api.config.Settings; + +import java.io.File; + +/** + * This plugin relates to projects/project-builder sample + */ +public final class CreateSubProjects extends ProjectBuilder { + + private Settings settings; + + public CreateSubProjects(ProjectReactor reactor, Settings settings) { + super(reactor); + + // A real implementation should for example use the configuration + this.settings = settings; + } + + @Override + protected void build(ProjectReactor reactor) { + if (!settings.getBoolean("sonar.enableProjectBuilder")) { + return; + } + System.out.println("---> Creating sub-projects"); + ProjectDefinition root = reactor.getRoot(); + + // add two modules + createSubProjectWithSourceDir(root); + createSubProjectWithSourceFiles(root); + } + + private ProjectDefinition createSubProjectWithSourceDir(ProjectDefinition root) { + File baseDir = new File(root.getBaseDir(), "module_a"); + ProjectDefinition subProject = ProjectDefinition.create(); + subProject.setBaseDir(baseDir).setWorkDir(new File(baseDir, "target/.sonar")); + subProject.setKey("com.sonarsource.it.projects.batch:project-builder-module-a"); + subProject.setVersion(root.getVersion()); + subProject.setName("Module A"); + subProject.setSourceDirs("src"); + root.addSubProject(subProject); + return subProject; + } + + private ProjectDefinition createSubProjectWithSourceFiles(ProjectDefinition root) { + File baseDir = new File(root.getBaseDir(), "module_b"); + ProjectDefinition subProject = ProjectDefinition.create(); + subProject.setBaseDir(baseDir).setWorkDir(new File(baseDir, "target/.sonar")); + subProject.setKey("com.sonarsource.it.projects.batch:project-builder-module-b"); + subProject.setVersion(root.getVersion()); + subProject.setName("Module B"); + subProject.addSourceFiles("src/HelloB.java"); + root.addSubProject(subProject); + return subProject; + } +} diff --git a/it/it-plugins/project-builder-plugin/src/main/java/ProjectBuilderPlugin.java b/it/it-plugins/project-builder-plugin/src/main/java/ProjectBuilderPlugin.java new file mode 100644 index 00000000000..e3d0bdca553 --- /dev/null +++ b/it/it-plugins/project-builder-plugin/src/main/java/ProjectBuilderPlugin.java @@ -0,0 +1,10 @@ +import org.sonar.api.SonarPlugin; + +import java.util.Arrays; +import java.util.List; + +public class ProjectBuilderPlugin extends SonarPlugin { + public List getExtensions() { + return Arrays.asList(CreateSubProjects.class, RenameProject.class); + } +} diff --git a/it/it-plugins/project-builder-plugin/src/main/java/RenameProject.java b/it/it-plugins/project-builder-plugin/src/main/java/RenameProject.java new file mode 100644 index 00000000000..67971dc208b --- /dev/null +++ b/it/it-plugins/project-builder-plugin/src/main/java/RenameProject.java @@ -0,0 +1,28 @@ +import org.sonar.api.batch.bootstrap.ProjectBuilder; +import org.sonar.api.batch.bootstrap.ProjectDefinition; +import org.sonar.api.batch.bootstrap.ProjectReactor; +import org.sonar.api.config.Settings; + +/** + * This plugin relates to projects/project-builder sample + */ +public final class RenameProject extends ProjectBuilder { + + private Settings settings; + + public RenameProject(ProjectReactor reactor, Settings settings) { + super(reactor); + this.settings = settings; + } + + @Override + protected void build(ProjectReactor reactor) { + if (!settings.getBoolean("sonar.enableProjectBuilder")) { + return; + } + System.out.println("---> Renaming project"); + // change name of root project + ProjectDefinition root = reactor.getRoot(); + root.setName("Name changed by plugin"); + } +} |