Skip to content

ericdes/nuxeo-distribution

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About
-----

This module builds the Nuxeo products: Nuxeo EP, Nuxeo WebEngine, Nuxeo Shell,
etc.

Building predefined applications
--------------------------------

Using this project you can build the following applications:

1. Nuxeo EP

Previously built by nuxeo-platform/nuxeo-platform-ear/, Nuxeo EP EAR is now
built here.

- From this directory, use the following command: "mvn install -Pnuxeo-ep"

- From nuxeo-platform-ear, run "mvn install" or see in package.sh for available
  packages.

  Built EAR is in nuxeo-platform-ear/target/ and its name depends on chosen
  package: default is nuxeo.ear

2. Nuxeo Document Management

- From this directory, run "mvn install" or "mvn install -Pnuxeo-dm"

  Built EAR is in nuxeo-distribution-dm/target.

3. Nuxeo Shell 

A command-line client application suitable to connect to remote nuxeo servers.

This application can be used to connect to remote nuxeo servers for debugging,
browsing or administration purposes.

To build, run: "mvn install -Pshell"
    
4. Nuxeo Core Server 

A minimal server application. An embedded repository will be started. No other
platform services are available.
  
This application can be used to debug, test or develop nuxeo components that
need a repository connection.
  
Remoting will be also available in the future via Nuxeo Runtime.
  
To build, run: "mvn install -Pcore"
    
5. Nuxeo Jetty Server
  
A Nuxeo server application embedding a Jetty server. 
  
This application can be used to browse repository content via WEB.
  
This is also known as Nuxeo WebEngine (based on Jetty).

To build, run: "mvn install -Pjetty"
   
6. Nuxeo GF3 Server
  
A Nuxeo server application embedding a GlassFish v3 server. 
  
This application can be used to browse a repository content via the web.
  
This is also known as Nuxeo WebEngine (based on GF3).
   
In the future, this application will provide a full installation of Nuxeo
(including EJBs, JMS, etc).

To build, run: "mvn install -Pgf3"

By default the build will generate a server based on jcr repository backendand without RA enabled.
You can customize your builds using profiles as following:
    - "mvn install -Pgf3,vcs" - a server using VCS repository backend
    - "mvn install -Pgf3,vcs,ra" - a server using VCS repository bacend + RA support (this e,ans repository will take part of tx)
    - "mvn install -Pgf3,jcr,ra" - a server using JCR based repository backend + RA support
    
6. Nuxeo Tomcat WebApp
  
A Nuxeo Server packaged as an exploded WAR for Tomcat v6.

This build will generate a zip containing a 'tomcat' directory. You need to
copy the content of this directory to your installed Tomcat. Then restart
Tomcat.

Nuxeo WebEngine will be available at htpp://localhost:8080/nuxeo

To build, run: "mvn install -Ptomcat"

Extending
---------

This project manages the build of standalone Nuxeo applications such as nxshell
and WebEngine.

The build logic is slightly different from the nuxeo.ear build and is more
adapted for light packagings composed of well defined nuxeo artifact subsets.

The main difference is the way the final ZIPs are assembled. Instead of using
assembly descriptor inheritance, the final ZIP is assembled from several
prebuilt ZIPs by using an assembly descriptor.

Let's see for example how webengine based on jetty is built: as webengine is
using nxshell infrastructure, it need to share with this project the basic
infrastructure. On this skeleton it should add server specific artifacts and
configuration. Then it should add jetty specific config and JARs.

All these intermediate builds should be reusable to build other applications
like webengine based on GlassFish v3 or even nxshell itself.

To do this, 5 projects were created:

- A: nuxeo-distribution-base - contains basic skeleton of a standalone
application)

- B: nuxeo-distribution-shell - modifies the ZIP generated by A (by
adding/overriding or removing entries)

- C: nuxeo-distribution-server - modifies the ZIP generated by A by
adding server related artifacts and configuration

- D: nuxeo-distribution-jetty - modifies the ZIP generated by C by adding
jetty specific JARs and configuration

- E: nuxeo-distribution-gf3 - modifies the ZIP generated by C by adding
GF3 specific JARs and configuration

This way, the build is reused more easily than by using assembly inheritance,
since any modification on an intermediate artifact (ZIP) is automatically
visible in the projects that are overriding the artifact.

NB: we are not using for now categories on Nuxeo-Shell and Nuxeo-WebEngine
since the projects are not so complex to manage by using explicit dependencies
in assembly files. Also, existing categories may not fit well with the kind of
build done for nxshell or webengine. 

Maybe in the future we will use categories too, if projects become too complex.