You are viewing a plain text version of this content. The canonical link for it is here.
Posted to npanday-dev@incubator.apache.org by "christofer.dutz@c-ware.de" <ch...@c-ware.de> on 2012/03/02 09:39:41 UTC

exe archiver for Maven assembly plugin?

Hi,

I am currently trying to setup a Maven build consisting of a mixed configuration (I am using 1.5-incubator-SNAPSHOT):

1.       Java Library (jar packaging)

2.       Windows Executable (winexe packaging)
The release should be a jar containing the Java library with an embedded exe (So I can load the binary from within my Java code)

When using the Maven assembly plugin, all I get is this:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2.1:single (make-assembly) on project lib-psexec-assembly: Failed to create assembly: Error adding file-set for 'de.cware.utils:lib-psexec-service:winexe:1.0.0-SNAPSHOT' to archive: Error adding archived file-set. PlexusIoResourceCollection not found for: C:\Maven-Repository\de\cware\utils\lib-psexec-service\1.0.0-SNAPSHOT\lib-psexec-service-1.0.0-SNAPSHOT.exe: No such archiver: 'exe'. -> [Help 1]
So it seems there is no archiver available to handle exe resources.

So my question now is:
How do I configure the assembly to do this or is the such an assembler simply missing from NPanday and one should be implemented.

I would volunteer implementing one, if this would be the way to go, I just don't want to implement something that isn't needed.

Chris


[ C h r i s t o f e r  D u t z ]

C-Ware IT-Service
Inhaber
Dipl. Inf. Christofer Dutz
Karlstraße. 104, 64285 Darmstadt

fon:  0 61 51 / 27315 - 61
fax:  0 61 51 / 27315 - 64
mobil:  0171 / 7 444 2 33
email:  christofer.dutz@c-ware.de<ma...@c-ware.de>
http://www.c-ware.de<http://www.c-ware.de/>

UStId-Nr. DE195700962


AW: exe archiver for Maven assembly plugin?

Posted by "christofer.dutz@c-ware.de" <ch...@c-ware.de>.
Ok ... so as the patch is allways removed, here it comes inline

Index: plugins/maven-exe-archiver-plugin/pom.xml
===================================================================
--- plugins/maven-exe-archiver-plugin/pom.xml	(revision 0)
+++ plugins/maven-exe-archiver-plugin/pom.xml	(working copy)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<project
+        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+        xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.npanday.plugins</groupId>
+        <artifactId>maven-dotnet-plugins</artifactId>
+        <version>1.5.0-incubating-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.npanday.plugins</groupId>
+    <artifactId>maven-exe-archiver-plugin</artifactId>
+    <version>1.5.0-incubating-SNAPSHOT</version>
+
+    <name>NPanday :: Archiver :: 'Exe' Archiver Plugin</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-archiver</artifactId>
+            <version>1.1</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
Index: plugins/maven-exe-archiver-plugin/src/main/java/npanday/plugin/archiver/PlexusIoExeResourceCollection.java
===================================================================
--- plugins/maven-exe-archiver-plugin/src/main/java/npanday/plugin/archiver/PlexusIoExeResourceCollection.java	(revision 0)
+++ plugins/maven-exe-archiver-plugin/src/main/java/npanday/plugin/archiver/PlexusIoExeResourceCollection.java	(working copy)
@@ -0,0 +1,37 @@
+package npanday.plugin.archiver;
+
+import org.codehaus.plexus.components.io.resources.PlexusIoCompressedFileResourceCollection;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: cdutz
+ * Date: 02.03.12
+ * Time: 12:04
+ */
+public class PlexusIoExeResourceCollection extends PlexusIoCompressedFileResourceCollection {
+
+    @Override
+    protected String getDefaultExtension() {
+        return ".exe";
+    }
+
+    @Override
+    protected InputStream getInputStream(File file) throws IOException {
+        // Simply return an InputStream to the resource file.
+        // This will make it embed the source as a whole.
+        return new FileInputStream(file);
+    }
+
+    @Override
+    public String getPath() {
+        // Without overriding this, the exe would be included with its full path.
+        // This way it is included directly in the root of the result archive.
+        return super.getFile().getName();
+    }
+
+}
\ No newline at end of file
Index: plugins/maven-exe-archiver-plugin/src/main/resources/META-INF/plexus/components.xml
===================================================================
--- plugins/maven-exe-archiver-plugin/src/main/resources/META-INF/plexus/components.xml	(revision 0)
+++ plugins/maven-exe-archiver-plugin/src/main/resources/META-INF/plexus/components.xml	(working copy)
@@ -0,0 +1,10 @@
+<component-set>
+    <components>
+        <component>
+              <role>org.codehaus.plexus.components.io.resources.PlexusIoResourceCollection</role>
+              <role-hint>exe</role-hint>
+              <implementation>npanday.plugin.archiver.PlexusIoExeResourceCollection</implementation>
+              <instantiation-strategy>per-lookup</instantiation-strategy>
+            </component>
+    </components>
+</component-set>
\ No newline at end of file
Index: plugins/pom.xml
===================================================================
--- plugins/pom.xml	(revision 1295495)
+++ plugins/pom.xml	(working copy)
@@ -58,6 +58,7 @@
     <module>netplugins/NPanday.Plugin.SysRef/javabinding</module>
     <module>netplugins/NPanday.Plugin.Msbuild/javabinding</module>
     <module>silverlight-maven-plugin</module>
+    <module>maven-exe-archiver-plugin</module>
   </modules>
   <dependencies>
     <dependency>


Chris





-----Ursprüngliche Nachricht-----
Von: christofer.dutz@c-ware.de [mailto:christofer.dutz@c-ware.de] 
Gesendet: Freitag, 2. März 2012 13:24
An: npanday-dev@incubator.apache.org
Betreff: AW: exe archiver for Maven assembly plugin?

Here goes again ...

-----Ursprüngliche Nachricht-----
Von: christofer.dutz@c-ware.de [mailto:christofer.dutz@c-ware.de] 
Gesendet: Freitag, 2. März 2012 13:01
An: npanday-dev@incubator.apache.org
Betreff: AW: exe archiver for Maven assembly plugin?

Hi,

Ok ... so I couldn't find anything in the NPanday Source, so I figgured out a solution on my own.
I applies the patch to NPanday to this mail. With this module I am able to create maven assemblies containing executables.

Here comes an example pom using this plugin (don't know if plugin is really the right name for it):

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>de.cware.utils</groupId>
        <artifactId>lib-psexec</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <groupId>de.cware.utils</groupId>
    <artifactId>lib-psexec-client</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>de.cware.utils</groupId>
            <artifactId>lib-psexec-service</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <type>winexe</type>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.npanday.plugins</groupId>
                        <artifactId>maven-exe-archiver-plugin</artifactId>
                        <version>${npanday.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

</project>

The result is a Jar file containing all the classes of lib-psexec-client as well as the binary of lib-psexec-service embedded inside it. So it solved the problems I was having. I haven't done intense testing though as I simply wanted to embed exe files in my jars and this does the trick ;-)

Chris


-----Ursprüngliche Nachricht-----
Von: christofer.dutz@c-ware.de [mailto:christofer.dutz@c-ware.de] 
Gesendet: Freitag, 2. März 2012 10:40
An: npanday-dev@incubator.apache.org
Betreff: exe archiver for Maven assembly plugin?

Hi,

I am currently trying to setup a Maven build consisting of a mixed configuration (I am using 1.5-incubator-SNAPSHOT):

1.       Java Library (jar packaging)

2.       Windows Executable (winexe packaging)
The release should be a jar containing the Java library with an embedded exe (So I can load the binary from within my Java code)

When using the Maven assembly plugin, all I get is this:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2.1:single (make-assembly) on project lib-psexec-assembly: Failed to create assembly: Error adding file-set for 'de.cware.utils:lib-psexec-service:winexe:1.0.0-SNAPSHOT' to archive: Error adding archived file-set. PlexusIoResourceCollection not found for: C:\Maven-Repository\de\cware\utils\lib-psexec-service\1.0.0-SNAPSHOT\lib-psexec-service-1.0.0-SNAPSHOT.exe: No such archiver: 'exe'. -> [Help 1] So it seems there is no archiver available to handle exe resources.

So my question now is:
How do I configure the assembly to do this or is the such an assembler simply missing from NPanday and one should be implemented.

I would volunteer implementing one, if this would be the way to go, I just don't want to implement something that isn't needed.

Chris


[ C h r i s t o f e r  D u t z ]

C-Ware IT-Service
Inhaber
Dipl. Inf. Christofer Dutz
Karlstraße. 104, 64285 Darmstadt

fon:  0 61 51 / 27315 - 61
fax:  0 61 51 / 27315 - 64
mobil:  0171 / 7 444 2 33
email:  christofer.dutz@c-ware.de<ma...@c-ware.de>
http://www.c-ware.de<http://www.c-ware.de/>

UStId-Nr. DE195700962


AW: exe archiver for Maven assembly plugin?

Posted by "christofer.dutz@c-ware.de" <ch...@c-ware.de>.
Here goes again ...

-----Ursprüngliche Nachricht-----
Von: christofer.dutz@c-ware.de [mailto:christofer.dutz@c-ware.de] 
Gesendet: Freitag, 2. März 2012 13:01
An: npanday-dev@incubator.apache.org
Betreff: AW: exe archiver for Maven assembly plugin?

Hi,

Ok ... so I couldn't find anything in the NPanday Source, so I figgured out a solution on my own.
I applies the patch to NPanday to this mail. With this module I am able to create maven assemblies containing executables.

Here comes an example pom using this plugin (don't know if plugin is really the right name for it):

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>de.cware.utils</groupId>
        <artifactId>lib-psexec</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <groupId>de.cware.utils</groupId>
    <artifactId>lib-psexec-client</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>de.cware.utils</groupId>
            <artifactId>lib-psexec-service</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <type>winexe</type>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.npanday.plugins</groupId>
                        <artifactId>maven-exe-archiver-plugin</artifactId>
                        <version>${npanday.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

</project>

The result is a Jar file containing all the classes of lib-psexec-client as well as the binary of lib-psexec-service embedded inside it. So it solved the problems I was having. I haven't done intense testing though as I simply wanted to embed exe files in my jars and this does the trick ;-)

Chris


-----Ursprüngliche Nachricht-----
Von: christofer.dutz@c-ware.de [mailto:christofer.dutz@c-ware.de] 
Gesendet: Freitag, 2. März 2012 10:40
An: npanday-dev@incubator.apache.org
Betreff: exe archiver for Maven assembly plugin?

Hi,

I am currently trying to setup a Maven build consisting of a mixed configuration (I am using 1.5-incubator-SNAPSHOT):

1.       Java Library (jar packaging)

2.       Windows Executable (winexe packaging)
The release should be a jar containing the Java library with an embedded exe (So I can load the binary from within my Java code)

When using the Maven assembly plugin, all I get is this:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2.1:single (make-assembly) on project lib-psexec-assembly: Failed to create assembly: Error adding file-set for 'de.cware.utils:lib-psexec-service:winexe:1.0.0-SNAPSHOT' to archive: Error adding archived file-set. PlexusIoResourceCollection not found for: C:\Maven-Repository\de\cware\utils\lib-psexec-service\1.0.0-SNAPSHOT\lib-psexec-service-1.0.0-SNAPSHOT.exe: No such archiver: 'exe'. -> [Help 1] So it seems there is no archiver available to handle exe resources.

So my question now is:
How do I configure the assembly to do this or is the such an assembler simply missing from NPanday and one should be implemented.

I would volunteer implementing one, if this would be the way to go, I just don't want to implement something that isn't needed.

Chris


[ C h r i s t o f e r  D u t z ]

C-Ware IT-Service
Inhaber
Dipl. Inf. Christofer Dutz
Karlstraße. 104, 64285 Darmstadt

fon:  0 61 51 / 27315 - 61
fax:  0 61 51 / 27315 - 64
mobil:  0171 / 7 444 2 33
email:  christofer.dutz@c-ware.de<ma...@c-ware.de>
http://www.c-ware.de<http://www.c-ware.de/>

UStId-Nr. DE195700962


AW: exe archiver for Maven assembly plugin?

Posted by "christofer.dutz@c-ware.de" <ch...@c-ware.de>.
Hi,

Ok ... so I couldn't find anything in the NPanday Source, so I figgured out a solution on my own.
I applies the patch to NPanday to this mail. With this module I am able to create maven assemblies containing executables.

Here comes an example pom using this plugin (don't know if plugin is really the right name for it):

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>de.cware.utils</groupId>
        <artifactId>lib-psexec</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <groupId>de.cware.utils</groupId>
    <artifactId>lib-psexec-client</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>de.cware.utils</groupId>
            <artifactId>lib-psexec-service</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <type>winexe</type>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.npanday.plugins</groupId>
                        <artifactId>maven-exe-archiver-plugin</artifactId>
                        <version>${npanday.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

</project>

The result is a Jar file containing all the classes of lib-psexec-client as well as the binary of lib-psexec-service embedded inside it. So it solved the problems I was having. I haven't done intense testing though as I simply wanted to embed exe files in my jars and this does the trick ;-)

Chris


-----Ursprüngliche Nachricht-----
Von: christofer.dutz@c-ware.de [mailto:christofer.dutz@c-ware.de] 
Gesendet: Freitag, 2. März 2012 10:40
An: npanday-dev@incubator.apache.org
Betreff: exe archiver for Maven assembly plugin?

Hi,

I am currently trying to setup a Maven build consisting of a mixed configuration (I am using 1.5-incubator-SNAPSHOT):

1.       Java Library (jar packaging)

2.       Windows Executable (winexe packaging)
The release should be a jar containing the Java library with an embedded exe (So I can load the binary from within my Java code)

When using the Maven assembly plugin, all I get is this:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2.1:single (make-assembly) on project lib-psexec-assembly: Failed to create assembly: Error adding file-set for 'de.cware.utils:lib-psexec-service:winexe:1.0.0-SNAPSHOT' to archive: Error adding archived file-set. PlexusIoResourceCollection not found for: C:\Maven-Repository\de\cware\utils\lib-psexec-service\1.0.0-SNAPSHOT\lib-psexec-service-1.0.0-SNAPSHOT.exe: No such archiver: 'exe'. -> [Help 1] So it seems there is no archiver available to handle exe resources.

So my question now is:
How do I configure the assembly to do this or is the such an assembler simply missing from NPanday and one should be implemented.

I would volunteer implementing one, if this would be the way to go, I just don't want to implement something that isn't needed.

Chris


[ C h r i s t o f e r  D u t z ]

C-Ware IT-Service
Inhaber
Dipl. Inf. Christofer Dutz
Karlstraße. 104, 64285 Darmstadt

fon:  0 61 51 / 27315 - 61
fax:  0 61 51 / 27315 - 64
mobil:  0171 / 7 444 2 33
email:  christofer.dutz@c-ware.de<ma...@c-ware.de>
http://www.c-ware.de<http://www.c-ware.de/>

UStId-Nr. DE195700962


Re: exe archiver for Maven assembly plugin?

Posted by Lars Corneliussen <me...@lcorneliussen.de>.
Hallo Christopher,

seems like you find out things …
Can't really grasp what you are trying to do.

_
Lars
- auch deutsch :-) -

Am 02.03.2012 um 10:39 schrieb christofer.dutz@c-ware.de:

> Hi,
> 
> I am currently trying to setup a Maven build consisting of a mixed configuration (I am using 1.5-incubator-SNAPSHOT):
> 
> 1.       Java Library (jar packaging)
> 
> 2.       Windows Executable (winexe packaging)
> The release should be a jar containing the Java library with an embedded exe (So I can load the binary from within my Java code)
> 
> When using the Maven assembly plugin, all I get is this:
> [ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2.1:single (make-assembly) on project lib-psexec-assembly: Failed to create assembly: Error adding file-set for 'de.cware.utils:lib-psexec-service:winexe:1.0.0-SNAPSHOT' to archive: Error adding archived file-set. PlexusIoResourceCollection not found for: C:\Maven-Repository\de\cware\utils\lib-psexec-service\1.0.0-SNAPSHOT\lib-psexec-service-1.0.0-SNAPSHOT.exe: No such archiver: 'exe'. -> [Help 1]
> So it seems there is no archiver available to handle exe resources.
> 
> So my question now is:
> How do I configure the assembly to do this or is the such an assembler simply missing from NPanday and one should be implemented.
> 
> I would volunteer implementing one, if this would be the way to go, I just don't want to implement something that isn't needed.
> 
> Chris
> 
> 
> [ C h r i s t o f e r  D u t z ]
> 
> C-Ware IT-Service
> Inhaber
> Dipl. Inf. Christofer Dutz
> Karlstraße. 104, 64285 Darmstadt
> 
> fon:  0 61 51 / 27315 - 61
> fax:  0 61 51 / 27315 - 64
> mobil:  0171 / 7 444 2 33
> email:  christofer.dutz@c-ware.de<ma...@c-ware.de>
> http://www.c-ware.de<http://www.c-ware.de/>
> 
> UStId-Nr. DE195700962
>