Dashboard > WOProject / WOLips > ... > WOProject-Maven2 > Packaging WO Applications as true WAR with Maven
  WOProject / WOLips Log In View a printable version of the current page.  
  Packaging WO Applications as true WAR with Maven
Added by Henrique Prange, last edited by Henrique Prange on Jun 27, 2008  (view change)
Labels: 
(None)

If you have used the woapplication-archetype to create your project, jump to the step 3.

You have to follow some instructions to build a true WAR package:

Step 1: Create a web.xml file

You need to create a web.xml file. You can download a simple web.xml file here. Don't forget to change the displayName and the WOMainBundle properties:

<web-app>
   ...
   <display-name>Your Application Name</display-name>
   ...
   <context-param>
      <param-name>WOMainBundle</param-name>
      <param-value>your-app-name</param-value>
   </context-param>
   ...
</web-app>

Step 2: Create/generate an Info.plist file

You also need to create or generate a valid Info.plist file into your resources folder. Here is a sample Info.plist. You have to change the ${your-app-name} and ${package} occurrences with the respective application name and Application class package.

Step 3: Package your classes, resources and webserver resources

The application jar must follow the NSJarBundle format. The NSJarBundle is a package organized in Resources and WebServerResources folders. In addition, the Resources folder must contain a valid Info.plist file. Your application classes, resources and webserver resources must be package as a jar. It is easy to configure Maven to do this:

<build>
   ...
   <plugin>
      <artifactId>maven-war-plugin</artifactId>
      <configuration>
         <archiveClasses>true</archiveClasses>
      </configuration>
   </plugin>
   ...
</build>

Step 4: Add the required dependencies

You must add the following dependency to run the application as a true WAR:

<dependency>
   <groupId>com.webobjects</groupId>
   <artifactId>JavaWOJSPServlet</artifactId>
   <version>${woversion}</version>
</dependency>

NOTE: If you are using WebObjects 5.2.x or 5.3.x you have to add this additional dependency:

<dependency>
   <groupId>com.webobjects</groupId>
   <artifactId>JavaWOJSPServlet_client</artifactId>
   <version>${woversion}</version>
</dependency>

NOTE: if your application uses Wonder, please read this tutorial.

Step 5: Change the packaging type

The default maven-war-plugin can handle the war packaging correctly. You have to change the packaging of your POM to 'war' in order to use this plug-in:

<packaging>war</packaging>

It's done.

Running your application as true WAR

You can use the maven-jetty-plugin to run and test your application.

Step 1: Configure the maven-jetty-plugin

Add the following configuration to your POM:

<build>
   ...
   <plugin>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>maven-jetty-plugin</artifactId>
   </plugin>
   ...
</build>

Step 2: Start the Jetty container with Maven

Just execute:

mvn clean jetty:run-war

Step 3: See the result

Open a browser and type the URL for your application like this: http://locahost:8080/your-app-name/WebObjects/

Site powered by a free Open Source Project / Non-profit License (more) of Confluence - the Enterprise wiki.
Learn more or evaluate Confluence for your organisation.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5.4 Build:#809 Jun 12, 2007) - Bug/feature request - Contact Administrators