diff --git a/pom.xml b/pom.xml index 68d8405..461ea75 100644 --- a/pom.xml +++ b/pom.xml @@ -11,19 +11,10 @@ org.neo4j.build.plugins maven-plugin 0.1-SNAPSHOT - docs Maven Mojo - http://maven.apache.org + Neo4j documentation assembler. + components.neo4j.org + - - org.apache.maven - maven-plugin-api - 3.0.3 - - - org.apache.maven - maven-core - 3.0.3 - org.twdata.maven mojo-executor @@ -90,5 +81,83 @@ + + + + org.apache.maven + maven-core + 3.0.3 + + + org.apache.maven + maven-settings + 3.0.3 + + + org.codehaus.plexus + plexus-utils + 2.0.6 + + + org.apache.maven + maven-model + 3.0.3 + + + org.codehaus.plexus + plexus-interpolation + 1.14 + + + org.apache.maven + maven-artifact + 3.0.3 + + + org.apache.maven + maven-plugin-api + 3.0.3 + + + org.sonatype.aether + aether-api + 1.11 + + + org.sonatype.sisu + sisu-inject-plexus + 2.1.1 + + + org.apache.maven + maven-repository-metadata + 3.0.3 + + + org.apache.maven + maven-project + 3.0-alpha-2 + + + org.apache.maven + maven-monitor + 2.2.1 + + + org.codehaus.plexus + plexus-container-default + 1.5.5 + + + org.codehaus.plexus + plexus-classworlds + 2.4 + + + org.codehaus.plexus + plexus-component-annotations + 1.5.5 + + + - diff --git a/src/docs/subdir1/file2.txt b/src/docs/subdir1/file2.txt new file mode 100644 index 0000000..1e82757 --- /dev/null +++ b/src/docs/subdir1/file2.txt @@ -0,0 +1,3 @@ +content2 +${project.groupId} + diff --git a/src/main/java/org/neo4j/build/plugins/docs/AssembleMojo.java b/src/main/java/org/neo4j/build/plugins/docs/AssembleMojo.java index 92c1836..be7e885 100644 --- a/src/main/java/org/neo4j/build/plugins/docs/AssembleMojo.java +++ b/src/main/java/org/neo4j/build/plugins/docs/AssembleMojo.java @@ -21,6 +21,7 @@ import java.util.List; +import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.project.MavenProject; @@ -39,7 +40,14 @@ public class AssembleMojo extends AbstractMojo * * @parameter */ - private List sourceDirectories; + protected List sourceDirectories; + + /** + * If filtering should be applied to files. + * + * @parameter expression="${filter}" default-value="false" + */ + protected boolean filter; /** * The maven project. @@ -47,23 +55,31 @@ public class AssembleMojo extends AbstractMojo * @parameter expression="${project}" * @readonly */ - private MavenProject project; + protected MavenProject project; /** * @component */ - private MavenProjectHelper projectHelper; + protected MavenProjectHelper projectHelper; /** - * @component + * + * @component role="org.apache.maven.shared.filtering.MavenResourcesFiltering" role-hint="default" + * @required + */ + protected MavenResourcesFiltering resourceFiltering; + + /** + * @parameter default-value="${session}" + * @readonly + * @required */ - private MavenResourcesFiltering resourceFiltering; + protected MavenSession session; @Override public void execute() throws MojoExecutionException { - DocsAssembler.assemble( project, getLog(), projectHelper, - sourceDirectories, resourceFiltering ); + DocsAssembler.assemble( sourceDirectories, filter, getLog(), + session, project, projectHelper, resourceFiltering ); } } - diff --git a/src/main/java/org/neo4j/build/plugins/docs/DocsAssembler.java b/src/main/java/org/neo4j/build/plugins/docs/DocsAssembler.java index e075d7b..534789e 100644 --- a/src/main/java/org/neo4j/build/plugins/docs/DocsAssembler.java +++ b/src/main/java/org/neo4j/build/plugins/docs/DocsAssembler.java @@ -31,6 +31,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; +import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Resource; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.logging.Log; @@ -55,58 +56,49 @@ public final class DocsAssembler private MavenResourcesFiltering resourceFiltering; + private MavenSession session; + private Log getLog() { return log; } - private DocsAssembler( final MavenProject project, final Log log, - final MavenProjectHelper projectHelper ) + public DocsAssembler( final MavenProject project, final Log log, + final MavenProjectHelper projectHelper, + final MavenResourcesFiltering resourceFiltering, + MavenSession session ) { this.project = project; this.log = log; this.projectHelper = projectHelper; - } - - public DocsAssembler( final MavenProject project, final Log log, - final MavenProjectHelper projectHelper, - final MavenResourcesFiltering resourceFiltering ) - { - this( project, log, projectHelper ); this.resourceFiltering = resourceFiltering; + this.session = session; } - static File assemble( final MavenProject project, final Log log, - final MavenProjectHelper projectHelper, - final List sourceDirectories ) + static File assemble( final List sourceDirectories, final boolean filter, + final Log log, + MavenSession session, final MavenProject project, + final MavenProjectHelper projectHelper, MavenResourcesFiltering resourceFiltering ) throws MojoExecutionException { DocsAssembler assembler = new DocsAssembler( project, log, - projectHelper ); - return assembler.doAssembly( sourceDirectories ); + projectHelper, resourceFiltering, session ); + return assembler.doAssembly( sourceDirectories, filter ); } - static File assemble( final MavenProject project, final Log log, - final MavenProjectHelper projectHelper, - final List sourceDirectories, - final MavenResourcesFiltering resourceFiltering ) - throws MojoExecutionException - { - DocsAssembler assembler = new DocsAssembler( project, log, - projectHelper, resourceFiltering ); - return assembler.doAssembly( sourceDirectories ); - } - - private File doAssembly( final List sourceDirectories ) + private File doAssembly( final List sourceDirectories, + final boolean filter ) throws MojoExecutionException { + getLog().info( "Filtering is: " + ( filter ? "on" : "off" ) ); List dirs = getDirectories( sourceDirectories ); File destFile = null; - if ( resourceFiltering != null ) + if ( filter ) { File target = new File( new File( project.getBuild() .getDirectory() ), "filtered-docs" ); + deleteRecursively( target ); filterResources( dirs, target ); destFile = createArchive( Collections.singletonList( target ) ); } @@ -177,38 +169,37 @@ private void filterResources( final List directories, File targetDir ) int baseDirLength = project.getBasedir() .getAbsolutePath() .length() + 1; - MavenResourcesExecution resourcesExecution = new MavenResourcesExecution(); - resourcesExecution.setEncoding( "UTF-8" ); - resourcesExecution.setMavenProject( project ); - resourcesExecution.setOutputDirectory( targetDir ); - resourcesExecution.setResourcesBaseDirectory( project.getBasedir() ); - resourcesExecution.addFilterWrapper( new FileUtils.FilterWrapper() - { - @Override - public Reader getReader( final Reader reader ) - { - return reader; - } - } ); List resources = new ArrayList(); for ( File dir : directories ) { Resource resource = new Resource(); resource.setDirectory( dir.getAbsolutePath() .substring( baseDirLength ) ); - getLog().info( "Adding source directory: " + dir ); resource.setFiltering( true ); + getLog().info( "Adding source directory: " + dir ); resources.add( resource ); } - resourcesExecution.setResources( resources ); + + MavenResourcesExecution resourcesExecution = new MavenResourcesExecution( + resources, targetDir, project, "UTF-8", + Collections.emptyList(), + Collections.emptyList(), session ); + resourcesExecution.setResourcesBaseDirectory( project.getBasedir() ); + resourcesExecution.addFilterWrapper( new FileUtils.FilterWrapper() + { + @Override + public Reader getReader( final Reader reader ) + { + return reader; + } + } ); try { resourceFiltering.filterResources( resourcesExecution ); } catch ( MavenFilteringException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); + getLog().error( e ); } } @@ -304,4 +295,25 @@ private void addDirectory( final File dir, final List directories ) } directories.add( dir ); } + + private static void deleteRecursively( File file ) + { + if ( !file.exists() ) + { + return; + } + + if ( file.isDirectory() ) + { + for ( File child : file.listFiles() ) + { + deleteRecursively( child ); + } + } + if ( !file.delete() ) + { + throw new RuntimeException( + "Couldn't empty database. Offending file:" + file ); + } + } } diff --git a/src/main/java/org/neo4j/build/plugins/docs/InstallMojo.java b/src/main/java/org/neo4j/build/plugins/docs/InstallMojo.java index 6923ed5..c713338 100644 --- a/src/main/java/org/neo4j/build/plugins/docs/InstallMojo.java +++ b/src/main/java/org/neo4j/build/plugins/docs/InstallMojo.java @@ -31,14 +31,9 @@ import static org.twdata.maven.mojoexecutor.MojoExecutor.version; import java.io.File; -import java.util.List; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.BuildPluginManager; import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.project.MavenProject; -import org.apache.maven.project.MavenProjectHelper; /** * Goal which installs docs. Note: requires Maven 3 for plugin management (as it @@ -48,15 +43,8 @@ * @requiresDirectInvocation * @requiresDependencyResolution test */ -public class InstallMojo extends AbstractMojo +public class InstallMojo extends AssembleMojo { - /** - * Directories to include in the assembly. - * - * @parameter - */ - private List sourceDirectories; - /** * Test to execute. * @@ -64,28 +52,6 @@ public class InstallMojo extends AbstractMojo */ private String test; - /** - * The maven project. - * - * @parameter expression="${project}" - * @readonly - */ - private MavenProject project; - - /** - * @component - */ - private MavenProjectHelper projectHelper; - - /** - * The Maven Session Object - * - * @parameter expression="${session}" - * @required - * @readonly - */ - private MavenSession session; - /** * The Maven PluginManager Object * @@ -117,8 +83,9 @@ private void executeTest() throws MojoExecutionException private void assembleInstall() throws MojoExecutionException { - final File destFile = DocsAssembler.assemble( project, getLog(), - projectHelper, sourceDirectories ); + final File destFile = DocsAssembler.assemble( sourceDirectories, filter, + getLog(), session, project, projectHelper, + resourceFiltering ); final String file = destFile.getAbsolutePath(); final String pomFile = new File( project.getBasedir(), "pom.xml" ).getAbsolutePath(); @@ -143,4 +110,3 @@ private void assembleInstall() throws MojoExecutionException executionEnvironment( project, session, pluginManager ) ); } } -