MASSEMBLY-775 make isAbsolute() check more general
We now also detect '/' as indicator for an absolute file
in a more generic way.
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
index af10ee6..4572449 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
@@ -25,6 +25,7 @@
import org.apache.maven.plugins.assembly.format.ReaderFormatter;
import org.apache.maven.plugins.assembly.model.Assembly;
import org.apache.maven.plugins.assembly.model.FileItem;
+import org.apache.maven.plugins.assembly.utils.AssemblyFileUtils;
import org.apache.maven.plugins.assembly.utils.AssemblyFormatUtils;
import org.apache.maven.plugins.assembly.utils.TypeConversionUtils;
import org.codehaus.plexus.archiver.Archiver;
@@ -73,7 +74,7 @@
// create a temp file with a different name.
final String sourceName = source.getName();
- if ( !source.isAbsolute() )
+ if ( !AssemblyFileUtils.isAbsolutePath( source ) )
{
source = new File( basedir, sourcePath );
}
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhase.java b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhase.java
index 81cf4c7..e35c8e8 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhase.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhase.java
@@ -38,6 +38,7 @@
import org.apache.maven.plugins.assembly.model.ModuleBinaries;
import org.apache.maven.plugins.assembly.model.ModuleSet;
import org.apache.maven.plugins.assembly.model.ModuleSources;
+import org.apache.maven.plugins.assembly.utils.AssemblyFileUtils;
import org.apache.maven.plugins.assembly.utils.AssemblyFormatUtils;
import org.apache.maven.plugins.assembly.utils.FilterUtils;
import org.apache.maven.plugins.assembly.utils.ProjectUtils;
@@ -501,7 +502,7 @@
{
final File sourceDir = new File( sourcePath );
- if ( !sourceDir.isAbsolute() )
+ if ( !AssemblyFileUtils.isAbsolutePath( sourceDir ) )
{
sourcePath = new File( moduleBasedir, sourcePath ).getAbsolutePath();
}
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java
index e9a082e..5e44521 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java
@@ -24,6 +24,7 @@
import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
import org.apache.maven.plugins.assembly.format.ReaderFormatter;
import org.apache.maven.plugins.assembly.model.FileSet;
+import org.apache.maven.plugins.assembly.utils.AssemblyFileUtils;
import org.apache.maven.plugins.assembly.utils.AssemblyFormatUtils;
import org.apache.maven.plugins.assembly.utils.TypeConversionUtils;
import org.apache.maven.project.MavenProject;
@@ -192,7 +193,7 @@
// as File#isAbsolute() returns false for /absolutePath under Windows :(
// Note that in Windows an absolute path with / will be on the 'current drive'.
// But I think we can live with this.
- if ( !fileSetDir.isAbsolute() && !fileSetDir.getPath().startsWith( "/" ) )
+ if ( ! AssemblyFileUtils.isAbsolutePath( fileSetDir ) )
{
fileSetDir = new File( basedir, sourceDirectory );
}
diff --git a/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFileUtils.java b/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFileUtils.java
index 0874d39..cbe2713 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFileUtils.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFileUtils.java
@@ -108,4 +108,16 @@
{
return isPropertyFile( file.getName() );
}
+
+ /**
+ * This method exists because {@link File#isAbsolute()} is not OS independent.
+ *
+ * In addition to the check in {@link File#isAbsolute()} we will also test for a leading '/'.
+ *
+ * @return {@code true} if {@code File#isAbsolute()} or starts with a '/'
+ */
+ public static boolean isAbsolutePath( File dir )
+ {
+ return dir != null && ( dir.isAbsolute() || dir.getPath().startsWith( "/" ) );
+ }
}