@Command("remove-parent") public void removeParent(final PipeOut out) { MavenCoreFacet mvn = project.getFacet(MavenCoreFacet.class); Model pom = mvn.getPOM(); Parent parent = pom.getParent(); if (parent != null) { String parentId = parent.getGroupId() + ":" + parent.getArtifactId() + ":" + parent.getVersion() + " (" + (parent.getRelativePath() == null ? " " : parent.getRelativePath() + ")"); if (shell.promptBoolean( "Are you sure you want to remove all parent information from this project? [ " + parentId + "]", false)) { out.println("Removed parent [ " + parentId + " ]"); pom.setParent(null); mvn.setPOM(pom); } else { out.println("Aborted..."); } } else { out.println("Nothing to remove..."); } }
@Test public void testJacocoCommands() throws Exception { Project project = initializeJavaProject(); Dependency junitDep = new Dependency(); junitDep.setArtifactId("junit"); junitDep.setGroupId("junit"); junitDep.setVersion("4.10"); junitDep.setScope("test"); MavenCoreFacet facet = project.getFacet(MavenCoreFacet.class); Model pom = facet.getPOM(); pom.addDependency(junitDep); facet.setPOM(pom); queueInputLines(""); // create some simple classes getShell().execute("java new-class --package com.test \"public class A {}\""); getShell().execute("java new-field \"private int numberA=1;\""); getShell().execute("java new-method \"public int getNumberA(){return numberA;}\""); getShell().execute("java new-class --package com.test \"public class B {}\""); getShell().execute("java new-field \"private int numberB=2;\""); getShell().execute("java new-method \"public int getNumberB(){return numberB;}\""); // create and copy test class getShell() .execute( "java new-class --package com.test \"package com.test; import org.junit.Test;import static org.junit.Assert.*; public class ABTest {}\""); getShell() .execute( "java new-method \"@Test public void testClasses(){A a = new A();B b = new B();assertEquals(3,a.getNumberA()+b.getNumberB());}\""); getShell().execute("cd " + project.getProjectRoot().getFullyQualifiedName()); getShell().execute("cp src/main/java/com/test/ABTest.java src/test/java/"); getShell().execute("rm -rf src/main/java/com/test/ABTest.java"); // run jacoco plugin commands getShell().execute("jacoco setup"); getShell().execute("jacoco run-tests --package com.test"); queueInputLines("N"); getShell().execute("jacoco create-report"); assertTrue( "Missing jacoco.exec file!", project.getProjectRoot().getChildDirectory("target").getChild("jacoco.exec").exists()); assertTrue( "Missing index.html report file!", project .getProjectRoot() .getChildDirectory("target") .getChildDirectory("site") .getChildDirectory("jacoco") .getChild("index.html") .exists()); }
@Command("set-artifactid") public void setArtifactId( final PipeOut out, @Option(description = "the new artifactId; for example: \"forge-shell\"") final String artifactId) { Assert.notNull(artifactId, "GroupId must not be empty"); MavenCoreFacet mvn = project.getFacet(MavenCoreFacet.class); Model pom = mvn.getPOM(); pom.setArtifactId(artifactId); mvn.setPOM(pom); out.println("Set artifactId [ " + artifactId + " ]"); }
@Command("set-groupid") public void setGroupId( final PipeOut out, @Option(description = "the new groupId; for example: \"org.jboss.forge\"") final String groupId) { Assert.notNull(groupId, "GroupId must not be empty"); MavenCoreFacet mvn = project.getFacet(MavenCoreFacet.class); Model pom = mvn.getPOM(); pom.setGroupId(groupId); mvn.setPOM(pom); out.println("Set groupId [ " + groupId + " ]"); }
@Command("set-version") public void setVersion( final PipeOut out, @Option(description = "the new version; for example: \"1.0.0.Final\"") final String version) { Assert.notNull(version, "GroupId must not be empty"); MavenCoreFacet mvn = project.getFacet(MavenCoreFacet.class); Model pom = mvn.getPOM(); pom.setVersion(version); mvn.setPOM(pom); out.println("Set version [ " + version + " ]"); }
@Override public boolean install() { if (!this.isInstalled()) { for (DirectoryResource folder : this.getSourceFolders()) { folder.mkdirs(); } // FIXME WOW this needs to be simplified somehow... MavenCoreFacet maven = project.getFacet(MavenCoreFacet.class); Model pom = maven.getPOM(); Build build = pom.getBuild(); if (build == null) { build = new Build(); } List<Plugin> plugins = build.getPlugins(); Plugin javaSourcePlugin = null; for (Plugin plugin : plugins) { if ("org.apache.maven.plugins".equals(plugin.getGroupId()) && "maven-compiler-plugin".equals(plugin.getArtifactId())) { javaSourcePlugin = plugin; } } if (javaSourcePlugin == null) { javaSourcePlugin = new Plugin(); // FIXME this should find the most recent version using DependencyResolver javaSourcePlugin.setGroupId("org.apache.maven.plugins"); javaSourcePlugin.setArtifactId("maven-compiler-plugin"); javaSourcePlugin.setVersion("2.3.2"); try { Xpp3Dom dom = Xpp3DomBuilder.build( new ByteArrayInputStream( "<configuration><source>1.6</source><target>1.6</target></configuration>" .getBytes()), "UTF-8"); javaSourcePlugin.setConfiguration(dom); } catch (Exception e) { throw new ProjectModelException(e); } } build.addPlugin(javaSourcePlugin); pom.setBuild(build); maven.setPOM(pom); } return true; }
@Command public void custom( PipeOut out, @Option(name = "artifact", required = true) String artifact, @Option(name = "group", required = true) String group, @Option(name = "version", required = true) String version) { final MavenCoreFacet mvnFacet = project.getFacet(MavenCoreFacet.class); Model pom = mvnFacet.getPOM(); org.apache.maven.model.Plugin plugin = new org.apache.maven.model.Plugin(); plugin.setGroupId(group); plugin.setArtifactId(artifact); plugin.setVersion(version); if (pom.getBuild().getPlugins().contains(plugin)) { return; } pom.getBuild().getPlugins().add(plugin); mvnFacet.setPOM(pom); }
@Command("set-parent") public void setParent( @Option( name = "parentId", description = "dependency identifier of parent, ex: \"org.jboss.forge:forge-parent:1.0.0\"", required = false) final Dependency gav, @Option( name = "parentRelativePath", description = "relative location from the current project to the parent project root folder", type = PromptType.FILE_PATH, required = false) final String relativePath, @Option( name = "parentProjectRoot", description = "absolute location of a project to use as this project's direct parent", required = false) final Resource<?> path, final PipeOut out) { MavenCoreFacet mvn = project.getFacet(MavenCoreFacet.class); Parent parent = null; if (gav != null) { Assert.notNull( gav.getArtifactId(), "ArtifactId must not be null [" + gav.toCoordinates() + "]"); Assert.notNull(gav.getGroupId(), "GroupId must not be null [" + gav.toCoordinates() + "]"); Assert.notNull(gav.getVersion(), "Version must not be null [" + gav.toCoordinates() + "]"); parent = new Parent(); parent.setArtifactId(gav.getArtifactId()); parent.setGroupId(gav.getGroupId()); parent.setVersion(gav.getVersion()); if (relativePath != null) { parent.setRelativePath(relativePath); } Model pom = mvn.getPOM(); pom.setParent(parent); mvn.setPOM(pom); } else if ((path != null) && factory.containsProject(path.reify(DirectoryResource.class))) { Project parentProject = factory.findProject(path.reify(DirectoryResource.class)); MavenCoreFacet parentCore = parentProject.getFacet(MavenCoreFacet.class); parent = new Parent(); parent.setArtifactId(parentCore.getMavenProject().getArtifactId()); parent.setGroupId(parentCore.getMavenProject().getGroupId()); parent.setVersion(parentCore.getMavenProject().getVersion()); if (relativePath != null) { parent.setRelativePath(relativePath); } Model pom = mvn.getPOM(); pom.setParent(parent); mvn.setPOM(pom); } else if (relativePath != null) { PathspecParser parser = new PathspecParser(resources, shell.getCurrentProject().getProjectRoot(), relativePath); List<Resource<?>> resolvedResources = parser.resolve(); if (!resolvedResources.isEmpty() && factory.containsProject(resolvedResources.get(0).reify(DirectoryResource.class))) { Project parentProject = factory.findProject(resolvedResources.get(0).reify(DirectoryResource.class)); MavenCoreFacet parentCore = parentProject.getFacet(MavenCoreFacet.class); parent = new Parent(); parent.setArtifactId(parentCore.getMavenProject().getArtifactId()); parent.setGroupId(parentCore.getMavenProject().getGroupId()); parent.setVersion(parentCore.getMavenProject().getVersion()); parent.setRelativePath(relativePath); Model pom = mvn.getPOM(); pom.setParent(parent); mvn.setPOM(pom); } else { out.print(ShellColor.RED, "***ERROR***"); out.println(" relative path did not resolve to a Project [" + relativePath + "]"); } } else { out.print(ShellColor.RED, "***ERROR***"); out.println(" you must specify a path to or dependency id of the parent project."); } if (parent != null) { String parentId = parent.getGroupId() + ":" + parent.getArtifactId() + ":" + parent.getVersion() + " (" + (parent.getRelativePath() == null ? " " : parent.getRelativePath() + ")"); out.println("Set parent [ " + parentId + " ]"); } }