From 7396da3bdfd34c03e92a88f91be526106bd737c6 Mon Sep 17 00:00:00 2001 From: Mark Donszelmann Date: Wed, 21 Oct 2009 14:58:47 +0200 Subject: Fixed NAR-82; Better fix for NAR-77 --- .../maven/plugin/nar/AbstractResourcesMojo.java | 96 ++++++++++++++-------- .../apache/maven/plugin/nar/NarCompileMojo.java | 2 +- .../maven/plugin/nar/NarGnuConfigureMojo.java | 10 +-- .../apache/maven/plugin/nar/NarGnuResources.java | 63 ++++++++++++++ .../apache/maven/plugin/nar/NarResourcesMojo.java | 4 +- src/main/resources/META-INF/plexus/components.xml | 9 +- 6 files changed, 135 insertions(+), 49 deletions(-) create mode 100644 src/main/java/org/apache/maven/plugin/nar/NarGnuResources.java (limited to 'src/main') diff --git a/src/main/java/org/apache/maven/plugin/nar/AbstractResourcesMojo.java b/src/main/java/org/apache/maven/plugin/nar/AbstractResourcesMojo.java index 31d9960..c3640cc 100644 --- a/src/main/java/org/apache/maven/plugin/nar/AbstractResourcesMojo.java +++ b/src/main/java/org/apache/maven/plugin/nar/AbstractResourcesMojo.java @@ -72,50 +72,76 @@ public abstract class AbstractResourcesMojo */ private ArchiverManager archiverManager; - protected void copyResources( File srcDir, String aol) - throws MojoExecutionException, MojoFailureException + protected int copyIncludes( File srcDir ) throws IOException { int copied = 0; - try + + // copy includes + File includeDir = new File( srcDir, resourceIncludeDir ); + if ( includeDir.exists() ) { - // copy headers - File includeDir = new File( srcDir, resourceIncludeDir ); - if ( includeDir.exists() ) - { - File includeDstDir = new File( getTargetDirectory(), "include" ); - copied += NarUtil.copyDirectoryStructure( includeDir, includeDstDir, null, NarUtil.DEFAULT_EXCLUDES ); - } + File includeDstDir = new File( getTargetDirectory(), "include" ); + copied += NarUtil.copyDirectoryStructure( includeDir, includeDstDir, null, NarUtil.DEFAULT_EXCLUDES ); + } + + return copied; + } - // copy binaries - File binDir = new File( srcDir, resourceBinDir ); - if ( binDir.exists() ) - { - File binDstDir = new File( getTargetDirectory(), "bin" ); - binDstDir = new File( binDstDir, aol ); + protected int copyBinaries( File srcDir, String aol ) + throws IOException { + int copied = 0; + + // copy binaries + File binDir = new File( srcDir, resourceBinDir ); + if ( binDir.exists() ) + { + File binDstDir = new File( getTargetDirectory(), "bin" ); + binDstDir = new File( binDstDir, aol ); - copied += NarUtil.copyDirectoryStructure( binDir, binDstDir, null, NarUtil.DEFAULT_EXCLUDES ); - } + copied += NarUtil.copyDirectoryStructure( binDir, binDstDir, null, NarUtil.DEFAULT_EXCLUDES ); + } - // copy libraries - File libDir = new File( srcDir, resourceLibDir ); - if ( libDir.exists() ) + return copied; + } + + protected int copyLibraries( File srcDir, String aol) throws MojoFailureException, IOException { + int copied = 0; + + // copy libraries + File libDir = new File( srcDir, resourceLibDir ); + if ( libDir.exists() ) + { + // create all types of libs + for ( Iterator i = getLibraries().iterator(); i.hasNext(); ) { - // create all types of libs - for ( Iterator i = getLibraries().iterator(); i.hasNext(); ) - { - Library library = (Library) i.next(); - String type = library.getType(); - File libDstDir = new File( getTargetDirectory(), "lib" ); - libDstDir = new File( libDstDir, aol ); - libDstDir = new File( libDstDir, type ); + Library library = (Library) i.next(); + String type = library.getType(); + File libDstDir = new File( getTargetDirectory(), "lib" ); + libDstDir = new File( libDstDir, aol ); + libDstDir = new File( libDstDir, type ); - // filter files for lib - String includes = - "**/*." - + NarUtil.getDefaults().getProperty( NarUtil.getAOLKey( aol ) + "." + type + ".extension" ); - copied += NarUtil.copyDirectoryStructure( libDir, libDstDir, includes, NarUtil.DEFAULT_EXCLUDES ); - } + // filter files for lib + String includes = + "**/*." + + NarUtil.getDefaults().getProperty( NarUtil.getAOLKey( aol ) + "." + type + ".extension" ); + copied += NarUtil.copyDirectoryStructure( libDir, libDstDir, includes, NarUtil.DEFAULT_EXCLUDES ); } + } + + return copied; + } + + protected void copyResources( File srcDir, String aol ) + throws MojoExecutionException, MojoFailureException + { + int copied = 0; + try + { + copied += copyIncludes( srcDir ); + + copied += copyBinaries( srcDir, aol); + + copied += copyLibraries( srcDir, aol ); // unpack jar files File classesDirectory = new File( getOutputDirectory(), "classes" ); diff --git a/src/main/java/org/apache/maven/plugin/nar/NarCompileMojo.java b/src/main/java/org/apache/maven/plugin/nar/NarCompileMojo.java index 47c6f76..6b55e60 100644 --- a/src/main/java/org/apache/maven/plugin/nar/NarCompileMojo.java +++ b/src/main/java/org/apache/maven/plugin/nar/NarCompileMojo.java @@ -47,7 +47,7 @@ import org.codehaus.plexus.util.StringUtils; * Compiles native source files. * * @goal nar-compile - * @phase process-classes + * @phase compile * @requiresDependencyResolution compile * @author Mark Donszelmann */ diff --git a/src/main/java/org/apache/maven/plugin/nar/NarGnuConfigureMojo.java b/src/main/java/org/apache/maven/plugin/nar/NarGnuConfigureMojo.java index c8ec983..a0cf60a 100644 --- a/src/main/java/org/apache/maven/plugin/nar/NarGnuConfigureMojo.java +++ b/src/main/java/org/apache/maven/plugin/nar/NarGnuConfigureMojo.java @@ -61,7 +61,9 @@ public class NarGnuConfigureMojo if ( shouldSkip() ) return; - // always copy, in case we need libs or include dirs + if ( !useGnu() ) + return; + File targetDir = getGnuAOLSourceDirectory(); if ( gnuSourceDirectory.exists() ) { @@ -76,13 +78,7 @@ public class NarGnuConfigureMojo { throw new MojoExecutionException( "Failed to copy GNU sources", e ); } - } - if ( !useGnu() ) - return; - - if ( targetDir.exists() ) - { File autogen = new File( targetDir, AUTOGEN ); if ( !gnuConfigureSkip && !gnuAutogenSkip && autogen.exists() ) { diff --git a/src/main/java/org/apache/maven/plugin/nar/NarGnuResources.java b/src/main/java/org/apache/maven/plugin/nar/NarGnuResources.java new file mode 100644 index 0000000..ca914c6 --- /dev/null +++ b/src/main/java/org/apache/maven/plugin/nar/NarGnuResources.java @@ -0,0 +1,63 @@ +package org.apache.maven.plugin.nar; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.IOException; + +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; + +/** + * Move the GNU style include/lib to some output directory + * + * @goal nar-gnu-resources + * @phase process-resources + * @requiresProject + * @author Mark Donszelmann + */ +public class NarGnuResources + extends AbstractGnuMojo +{ + public void execute() + throws MojoExecutionException, MojoFailureException + { + if ( shouldSkip() ) + return; + + if ( gnuSourceDirectory.exists() ) + { + int copied = 0; + + try + { + copied += copyIncludes( gnuSourceDirectory ); + } + catch ( IOException e ) + { + throw new MojoFailureException( "NAR: Gnu could not copy resources", e ); + } + + if (copied > 0) { + getLog().info( "Copied "+copied+" GNU resources" ); + } + + } + } +} diff --git a/src/main/java/org/apache/maven/plugin/nar/NarResourcesMojo.java b/src/main/java/org/apache/maven/plugin/nar/NarResourcesMojo.java index ebdb104..2c2a9b1 100644 --- a/src/main/java/org/apache/maven/plugin/nar/NarResourcesMojo.java +++ b/src/main/java/org/apache/maven/plugin/nar/NarResourcesMojo.java @@ -60,14 +60,14 @@ public class NarResourcesMojo if ( shouldSkip() ) return; - // scan for AOLs + // scan resourceDirectory for AOLs File aolDir = new File( resourceDirectory, "aol" ); if ( aolDir.exists() ) { String[] aol = aolDir.list(); for ( int i = 0; i < aol.length; i++ ) { - // copy onky resources of current AOL + // copy only resources of current AOL if ( resourcesCopyAOL && ( !aol[i].equals( getAOL().toString() ) ) ) continue; diff --git a/src/main/resources/META-INF/plexus/components.xml b/src/main/resources/META-INF/plexus/components.xml index 51afa51..cb10014 100644 --- a/src/main/resources/META-INF/plexus/components.xml +++ b/src/main/resources/META-INF/plexus/components.xml @@ -33,12 +33,13 @@ under the License. org.apache.maven.plugins:maven-nar-plugin:nar-gnu-configure org.apache.maven.plugins:maven-resources-plugin:resources, - org.apache.maven.plugins:maven-nar-plugin:nar-resources + org.apache.maven.plugins:maven-nar-plugin:nar-resources, + org.apache.maven.plugins:maven-nar-plugin:nar-gnu-resources org.apache.maven.plugins:maven-compiler-plugin:compile, org.apache.maven.plugins:maven-nar-plugin:nar-javah, - org.apache.maven.plugins:maven-nar-plugin:nar-gnu-make - org.apache.maven.plugins:maven-nar-plugin:nar-compile, - org.apache.maven.plugins:maven-nar-plugin:nar-gnu-process + org.apache.maven.plugins:maven-nar-plugin:nar-gnu-make, + org.apache.maven.plugins:maven-nar-plugin:nar-compile + org.apache.maven.plugins:maven-nar-plugin:nar-gnu-process -- cgit v1.2.3