Building a WebObjects Project

Last modified by David Avendasora on 2013/09/22 14:30

Overview

There are two different and very distinct kinds of builds used during the development and deployment of a WebObjects project.

  1. Incremental Build - this is what Eclipse does every time you save a file. It's automatic (unless you turn it off) and it is very unlikely you'll ever need to really think about it.
  2. Deployment Build - this is what you need to do every time you want to deploy your application. Often times you will customize this process if you are doing things differently than the defaults.

Both Incremental and Deployment builds make use of some common files to tell them where to look for resources needed to build an application or framework. They include:

  1. woproject.jar
     The woproject.jar library is embedded in WOLips to help Eclipse, Ant (when triggered from within Eclipse) and Maven build a valid WebObjects Application (.woa) or WebObjects Framework (.framework) bundle. If you are going to build your project using Hudson/Jenkins, then it will also need access to this library
  2. The build.properties File
     This file resides in the root directory your WebObjects project. It may be hidden from your view by Eclipse's ability to filter the displayed files in the WO Explorer view, but if you look in the project's directory in the finder/desktop/command line you will see it.
  3. wolips.properties
     This file can contain and override the same settings as the build.properties file, but it's primary purpose is to define the locations that a build done by Eclipse or Ant will look for compiled framework dependencies in. The default location of this file is:
    • Mac OS X: ~/Users/yourusername/Library/Application Support/WOLips/wolips.properties
    • Linux: /home/<user>/Library/Application Support/WOLips/wolips.properties
    • Windows: C:\Documents and Settings\<user>\Library\Application Support\WOLips\wolips.properties

Incremental Building

While you are writing your classes and Components (.html, .wod, etc.) the incremental builder is running in the background continuously compiling and validating your code against your projects other code and dependencies. The only time it isn't running is when you turn off "Build Automatically" in Eclipse under the Project menu.

When you are building automatically, you can launch your application at any time from within WOLips/Eclipse by right-clicking on the project and selecting either Run As — > WO Application or Debug As — > WO Application with no need to manually compile or install any source code either from your current project, or from any frameworks in the workspace that your project depends upon. WOLips/Eclipse takes care of resolving dependencies for things that are not in the locations they will be in in a deployed .woa or .framework bundle. The Incremental Builder does not use Ant or Maven.

Information
Incremental Builds != Ant/Maven Builds

Just because your project runs fine in Eclipse/WOLips does not necessarily mean it will build when using Ant or Maven. If you haven't made changes to the defaults and are doing a standard deployment then it should just work, but if you've modified install locations or are using source (as opposed to binary) frameworks then you will likely have additional steps that you'll need to do complete prior to being able to use Ant or Maven to build.

Deployment Building

The process of building WebObjects Applications and Frameworks for Deployment is more complicated and requires any depended-upon frameworks to already be compiled and installed in defined (but customizable) locations. Building and Installing of both Frameworks and Applications can be also be done directly in Eclipse, but it can also be done from the Command Line or better yet, using a Continuous Integration Server like Hudson/Jenkins. Use of Hudson/Jenkins to build your Applications is highly recommended.

The process and options vary slightly between Frameworks and Applications, but they share many fundamental concepts.

  • Building WO Frameworks using Ant
  • Building WO Applications using Ant