Register | Forgot password
Very handy. At least, that is what I would classify versions like. I mean, apart from the occasional "OMG! I didn't know version 0.0.9 still existed!", it allows you to pinpoint fixes, features and changes that you would want to have. Newer means better, right?
When you start out building your own WCBs, all of a sudden you are on the other side of this versioning story. Now you are in control of the version number and people expect you to enlighten them on the subject of fixes, features and changes. Even GX WebManager expects it from you, proudly displaying your WCB's version number in the WCB management console. So let us focus on this WCB version number. What is it and how can we do sane stuff with it?
First of all, the version number of your WCB is defined in the file "pom.xml". I did not have a WCB lying around, so I just opened the WCB Development - Quick start document, looked up my favorite archetype - I felt like a panel today ;-) - and executed the Maven command to create the WCB source directory. Now, my fresh "pom.xml" looked like this:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>nl.gx.webmanager.wcbs</groupId>
<artifactId>webmanager-wcbs</artifactId>
<version>9.6.1</version>
</parent>
<groupId>nl.gx.product</groupId>
<artifactId>helloworldpanel</artifactId>
<version>1.0.0</version>
<packaging>osgi-bundle</packaging>
<dependencies>
<dependency>
<groupId>nl.gx.product</groupId>
<artifactId>wmponlinehelp</artifactId>
<scope>provided</scope>
<version>9.6.1</version>
</dependency>
<dependency>
<groupId>nl.gx.webmanager.bundles</groupId>
<artifactId>webmanager-entitydomain-bundle</artifactId>
<scope>provided</scope>
<version>9.6.1</version>
</dependency>
<dependency>
<groupId>nl.gx.webmanager.bundles</groupId>
<artifactId>webmanager-entitymanager-bundle</artifactId>
<scope>provided</scope>
<version>9.6.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix.plugins</groupId>
<artifactId>maven-osgi-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<osgiManifest>
<bundleActivator>nl.gx.product.helloworldpanel.Activator</bundleActivator>
<bundleSymbolicName>nl.gx.product.helloworldpanel</bundleSymbolicName>
<bundleName>Panel helloworldpanel</bundleName>
<bundleDescription>Panel helloworldpanel</bundleDescription>
<bundleVendor>My Company</bundleVendor>
</osgiManifest>
</configuration>
</plugin>
</plugins>
</build>
</project>
There are quite a few versions in there, mostly for dependencies. The one <version> we are interested in, the version of our own WCB, is the one just below the <artifactId> with version "1.0.0".
Version numbers consist of three parts: "X.Y.Z". People often ask in what case to change what number. While this is not set in stone, there are some general rules of thumb:
Here are some examples to illustrate these rules:
So now that we have established version number rules, how do we use them in daily practice?
At GX, we do not tamper with version numbers during WCB development. We use Subversion to manage local development versions of the software. In the early stages of development I like to choose a number under "1.0.0" to indicate the code is not production ready yet.
We use the WCB version number to mark a release to a production environment (for all you curious types: yes, we also tag the release in SVN). This way we can keep track of the changes in a WCB and monitor what versions are up and running in the production environment.
Before I sign out, a clip from Like A Version, for all you country lovers out there. ;-)
Patrick
Patrick Atoon has gained nuff respect as one of the most experienced web architects in the GX Webmanager community or even the global hip hop community for that matter.
Read all Patricks blog entries
Other blog entries: