summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Donszelmann <Mark.Donszelmann@gmail.com>2009-10-21 14:58:47 +0200
committerMark Donszelmann <Mark.Donszelmann@gmail.com>2009-10-21 14:58:47 +0200
commit7396da3bdfd34c03e92a88f91be526106bd737c6 (patch)
treefbb1d328a6ebb34f44593fb6ceb44722769181dc
parentba12beea79817971caa6f0c9a6e9afa3afde7fa4 (diff)
downloadmaven-nar-plugin-7396da3bdfd34c03e92a88f91be526106bd737c6.tar.gz
maven-nar-plugin-7396da3bdfd34c03e92a88f91be526106bd737c6.tar.bz2
maven-nar-plugin-7396da3bdfd34c03e92a88f91be526106bd737c6.tar.xz
maven-nar-plugin-7396da3bdfd34c03e92a88f91be526106bd737c6.zip
Fixed NAR-82; Better fix for NAR-77
-rw-r--r--src/main/java/org/apache/maven/plugin/nar/AbstractResourcesMojo.java96
-rw-r--r--src/main/java/org/apache/maven/plugin/nar/NarCompileMojo.java2
-rw-r--r--src/main/java/org/apache/maven/plugin/nar/NarGnuConfigureMojo.java10
-rw-r--r--src/main/java/org/apache/maven/plugin/nar/NarGnuResources.java63
-rw-r--r--src/main/java/org/apache/maven/plugin/nar/NarResourcesMojo.java4
-rw-r--r--src/main/resources/META-INF/plexus/components.xml9
-rw-r--r--src/site/apt/lifecycle.apt58
7 files changed, 164 insertions, 78 deletions
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</process-sources>
<generate-resources></generate-resources>
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources,
- org.apache.maven.plugins:maven-nar-plugin:nar-resources</process-resources>
+ org.apache.maven.plugins:maven-nar-plugin:nar-resources,
+ org.apache.maven.plugins:maven-nar-plugin:nar-gnu-resources</process-resources>
<compile>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</compile>
- <process-classes>org.apache.maven.plugins:maven-nar-plugin:nar-compile,
- org.apache.maven.plugins:maven-nar-plugin:nar-gnu-process</process-classes>
+ org.apache.maven.plugins:maven-nar-plugin:nar-gnu-make,
+ org.apache.maven.plugins:maven-nar-plugin:nar-compile</compile>
+ <process-classes>org.apache.maven.plugins:maven-nar-plugin:nar-gnu-process</process-classes>
<generate-test-sources></generate-test-sources>
<process-test-sources></process-test-sources>
<generate-test-resources></generate-test-resources>
diff --git a/src/site/apt/lifecycle.apt b/src/site/apt/lifecycle.apt
index 0de6090..4d1b750 100644
--- a/src/site/apt/lifecycle.apt
+++ b/src/site/apt/lifecycle.apt
@@ -11,35 +11,35 @@ NAR Lifecycle
The table below shows the different phases of the NAR Lifecycle and the goals (including
standard maven goals) attached to them. The order is left to right, top to bottom.
-*------------------------+-------------------------------------------+
-| <Phase> | <Goals (NAR Goals in bold)> |
-*------------------------+-------------------------------------------+
-| generate-sources | <<nar-download>>, <<nar-system-generate>> |
-*------------------------+-------------------------------------------+
-| process-sources | <<nar-unpack>>, <<nar-gnu-configure>> |
-*------------------------+-------------------------------------------+
-| process-resources | resources, <<nar-resources>> |
-*------------------------+-------------------------------------------+
-| compile | compile, <<nar-javah>>, <<nar-gnu-make>> |
-*------------------------+-------------------------------------------+
-| process-classes | <<nar-compile>>, <<nar-gnu-process>> |
-*------------------------+-------------------------------------------+
-| process-test-resources | testResources |
-*------------------------+-------------------------------------------+
-| test-compile | testCompile |
-*------------------------+-------------------------------------------+
-| process-test-classes | <<nar-testCompile>> |
-*------------------------+-------------------------------------------+
-| test | test, <<nar-test>> |
-*------------------------+-------------------------------------------+
-| package | <<nar-package>>, jar |
-*------------------------+-------------------------------------------+
-| integration-test | <<nar-integration-test>> |
-*------------------------+-------------------------------------------+
-| install | install |
-*------------------------+-------------------------------------------+
-| deploy | deploy |
-*------------------------+-------------------------------------------+
+*------------------------+-----------------------------------------------------------+
+| <Phase> | <Goals (NAR Goals in bold)> |
+*------------------------+-----------------------------------------------------------+
+| generate-sources | <<nar-download>>, <<nar-system-generate>> |
+*------------------------+-----------------------------------------------------------+
+| process-sources | <<nar-unpack>>, <<nar-gnu-configure>> |
+*------------------------+-----------------------------------------------------------+
+| process-resources | resources, <<nar-resources>>, <<nar-gnu-resources>> |
+*------------------------+-----------------------------------------------------------+
+| compile | compile, <<nar-javah>>, <<nar-gnu-make>>, <<nar-compile>> |
+*------------------------+-----------------------------------------------------------+
+| process-classes | <<nar-gnu-process>> |
+*------------------------+-----------------------------------------------------------+
+| process-test-resources | testResources |
+*------------------------+-----------------------------------------------------------+
+| test-compile | testCompile |
+*------------------------+-----------------------------------------------------------+
+| process-test-classes | <<nar-testCompile>> |
+*------------------------+-----------------------------------------------------------+
+| test | test, <<nar-test>> |
+*------------------------+-----------------------------------------------------------+
+| package | <<nar-package>>, jar |
+*------------------------+-----------------------------------------------------------+
+| integration-test | <<nar-integration-test>> |
+*------------------------+-----------------------------------------------------------+
+| install | install |
+*------------------------+-----------------------------------------------------------+
+| deploy | deploy |
+*------------------------+-----------------------------------------------------------+
The NAR plugin attaches the nar files it produces to the main artifact (jar) so the standard