maven-assembly-plugin Windows vs Linux

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

maven-assembly-plugin Windows vs Linux

David Grigglestone
https://stackoverflow.com/questions/64364051/maven-assembly-plugin-windows-vs-linux 
.. sorry to post in two places, but hoping to get someones attention :-[ ...

I have a project that uses the maven-assembly-plugin and I see a
difference in behavior when building on Linux vs Windows. Exactly the
same pom.xml and assembly.xml are used on each platform.

Windows:

mvn logging looks like this:

|[INFO] --- maven-jar-plugin:3.1.0:jar (default-jar) @ foo --- [INFO]
Building jar: C:\foo\target\foo.jar [INFO] [INFO] ---
maven-assembly-plugin:3.1.0:single (default) @ foo --- [INFO] Reading
assembly descriptor: assembly.xml [INFO] Copying files to
C:\foo\target\foo [WARNING] Assembly file: C:\foo\target\foo is not a
regular file (it may be a directory). It cannot be attached to the
project build for installation or deployment. |

And in the target directory I observe a directory C:\foo\target\foo
which contains all the project's dependent jars.

Linux:

mvn logging looks like this:

|[INFO] --- maven-jar-plugin:3.1.0:jar (default-jar) @ foo --- [INFO]
Building jar: /home/<user>/foo/target/foo.jar [INFO] [INFO] ---
maven-assembly-plugin:3.1.0:single (default) @ foo --- [INFO] Reading
assembly descriptor: assembly.xml [INFO] Copying files to
/home/<user>/foo/target/foo-1.0.0001 [WARNING] Assembly file:
/home/<user>/foo/target/foo-1.0.0001 is not a regular file (it may be a
directory). It cannot be attached to the project build for installation
or deployment. |

But in the target directory there is no directory target/foo (nor
target/foo-1.0.001)

I should note that a downstream project is expecting the target/foo
directory to exist which is why I'm investigating the difference in
behavior between Windows and Linux.

This is plugin definition in my pom:

|<plugin> <artifactId>maven-assembly-plugin</artifactId> <executions>
<execution> <phase>package</phase> <goals> <goal>single</goal> </goals>
<configuration> <appendAssemblyId>false</appendAssemblyId> <descriptors>
<descriptor>assembly.xml</descriptor> </descriptors> </configuration>
</execution> </executions> </plugin> |

and this is the assembly descriptor:

|<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/3.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/3.1.0 
http://maven.apache.org/xsd/assembly-3.1.0.xsd"> <id>tar</id> <formats>
<format>dir</format> </formats>
<includeBaseDirectory>false</includeBaseDirectory> <files> <file>
<source>${project.build.directory}/${project.artifactId}.jar</source>
<outputDirectory>./</outputDirectory> </file> </files> <dependencySets>
<dependencySet> <unpack>false</unpack> <excludes>
<exclude>${artifact}</exclude> </excludes> </dependencySet>
</dependencySets> </assembly> |

I have tried tinkering with finalName in both the <configuration> and
<build> sections to no avail and have also tried more recent versions of
the plugin.

*The urgent question is why does a build on Windows give me the
target\foo directory with the dependencies in, whilst after a build on
Linux I don't see the equivalent ?*

Thanks very much for getting this far :-)