How to create installers with Maven

2019-01-31 20:51发布

问题:

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:

  • Windows 32/64 bit
  • Linux 32/64 bit
  • MacOS 32/64 bit

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?

回答1:

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>


回答2:

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/



回答3:

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.



回答4:

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

.deb

.rpm

nullsoft



回答5:

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



回答6:

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)