Uploaded image for project: 'Codehaus Cargo'
  1. Codehaus Cargo
  2. CARGO-457

Add Packager API to packager a container's distribution, a Configuration and deployed Deployables

    Details

    • Type: New Feature
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.8
    • Fix Version/s: 0.9
    • Component/s: Core
    • Labels:
      None

      Description

      From a mail sent to the dev list:

      Hi,
      
      I'd like to propose introducing a new API in Cargo: the Packager API. The idea is that it would be useful for our users to ask Cargo to give them a consolidated distribution containing the container distribution files, a container configuration and deployed deployables.
      
      For example this would be very useful for the use case where a user wants to use Cargo to generate an application (i.e. a container, its configuration and deployed deployables).
      
      I'm thus proposing the introduction of the following interface:
      
      /**
      * Gathers an installed container distribution and a local configuration in a single location.
      * There can be several packagers like a directory packager which packeg them in a given directory
      * on the file system, a ZIP packager which does the same but packaged as a ZIP file, etc.
      *
      * @version $Id: Container.java 886 2006-02-28 12:40:47Z vmassol $ */ public interface Packager {
      /**
      * Package an installed container distribution and its local configuration in a single location.
      *
      * @param container the installed container to package
      */
      void packageContainer(InstalledLocalContainer container); }
      
      This interface will be implemented by the different containers.
      
      We would also add a PackagerFactory class to return a packager for a given container.
      
      There could be several packager types (directory packager, zip packager, IzPack packager, etc). Thus we would also introduce a PackagerType class and use it to register packagers in the DefaultPackagerFactory class.
      
      Last, I'd like to introduce a new Maven2 MOJO so that users can type "mvn cargo:package". This would also mean the introduction a some new configuration elements:
      
      <configuration>
      <container/>
      <configuration/>
      <deployer/>
      <packager>
      <type>directory|zip|...</type>
      </packager>
      </configuration>
      
      The "directory" type would be the default so no configuration element would need to be specified to use it.
      
      WDYT?
      
      Thanks
      -Vincent
      

        Gliffy Diagrams

          Issue Links

            Activity

            There are no comments yet on this issue.

              People

              • Assignee:
                vincentmassol Vincent Massol
                Reporter:
                vincentmassol Vincent Massol
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: