How to create installers with Maven

I'm migrating a medium sized Java application's build from Ant to Maven. I could easily migrate the basic building stuff, but I would also like to create the installer packages from the Maven build. The easiest way would be to call the original Ant scripts through the Ant plugin, but I thought maybe I should look around first for some Maven support.

I'd need to create several different installers for different platforms:

For Linux now I think we only have a tar.gz and some Bash scripts to start the daemons - a Debian/RPM package would be much nicer, maybe with dependent package definitions, too. For the Windows installers we use NullSoft installer. I have no idea how the MacOS bundle is assembled now.

Are there any tools out there to do this (or at least part of it) from Maven?

Upvotes: 25

Views: 22009

Answers (6)

Rich Seller
Rich Seller

Reputation: 84038

I'd use the IzPack maven plugin if you need a full-blown installer, or the appassembler-maven-plugin if you simply need to generate daemons for java services.

There are also plugins for NSIS, Debian, and RPM packaging, but using those means you have to maintain configurations for each platform, on the other hand IzPack allows you to generate an installer for Windows XP / Vista / 2003 / 2000, Mac OS X, Solaris, Linux and *BSD.


The appassembler plugin provides a goal to generate JSW daemons for each platform. Here is an example configuration:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>appassembler-maven-plugin</artifactId>
  <version>1.0</version>
  <execution>
    <id>generate-jsw-scripts</id>
    <phase>package</phase>
    <goals>
      <goal>generate-daemons</goal>
    </goals>
    <configuration>
      <daemons>
        <daemon>
          <id>myApp</id>
          <mainClass>name.seller.rich.MainClass</mainClass>
          <commandLineArguments>
            <commandLineArgument>start</commandLineArgument>
          </commandLineArguments>
          <platforms>
            <platform>jsw</platform>
          </platforms>              
        </daemon>
      </daemons>
      <target>${project.build.directory}/appassembler</target>
    </configuration>
  </execution>
</plugin>

Upvotes: 19

Daniel Lopez
Daniel Lopez

Reputation: 3391

BitRock InstallBuilder can be used with Maven (and other CI build tools) to generate Windows exe installers, Linux binaries/RPM/DEB and OS X installers. It is commercial but we have discounts for small companies/solo developers and free licenses for open source projects (Disclaimer, I am the author of InstallBuilder)

Upvotes: 0

Glen
Glen

Reputation: 22290

There's some plugins out there that will do some of what you want.

.deb

.rpm

nullsoft

Upvotes: 1

Kieveli
Kieveli

Reputation: 11075

I'm looking into Installjammer - I don't see a maven plugin for it, but compared with izPack, it looks much more professional.

Upvotes: 0

Kutzi
Kutzi

Reputation: 1321

You could use IzPack and the IzPack maven plugin for that purpose. It works quite well for me: http://izpack.codehaus.org/izpack-maven-plugin/

Upvotes: 2

bastianneu
bastianneu

Reputation: 2069

I am not sure if i get the question right. Have you ever tried maven assembly?

http://maven.apache.org/plugins/maven-assembly-plugin/

That was i my first idea for your question.

Upvotes: 1

Related Questions