[PJUG Javamail] headless Eclipse builds and deployment

tkubaska at charter.net tkubaska at charter.net
Fri Jun 8 17:53:10 UTC 2007


I'm doing these Eclipse headless builds. Headless in this context means using Eclipse's PDE builder but not using it through the IDE.  People on this list helped with with this a while back (much thanks).

My question has to do with naming the resulting jar files for deployment.

Eclipse (the program) provides a lot of support to do headless builds.  Basically what you do is set up a bunch of parameters and then push the button. Most of the files (a lot of them are ant files) that get run are automatically generated.

It turns out that you give Eclipse a parameter to tell it what files to get from its CVS repository. This can be the name of a tag or just HEAD. All the code to check out the files is automatically generated (and you can't edit it, because the next time you run, these automatically generated files are deleted and made again). 

Now the code that makes the jar files is also automatically generated. Each Eclipse plugin gets its own generated build.xml. Inside that build.xml is a <jar/> task that makes the jar files. What I'm generating has dozens of generated build.xml files and hence dozens of jar files.

The automatic system uses the same parameter to construct the name of the jar file it makes that it does when it checks out the files. If you set this parameter to what you want the jar files to be named, the CVS checkout fails because there are no files in CVS tagged with that name.

What I want to do (I think I want to do this, but if it's too strange then I want to do what other people do) is check out the HEAD (because the HEAD should always be buildable and if it isn't I want to know), and build the HEAD. If the HEAD builds I want to zip up the resulting jar files and stick them on a site for download by our users. I don't want these jar files with HEAD in their names. Rather I want their names to have a unique name (like a timestamp, preferably the timestamp when I started the build, which mostly takes under 10 minutes). 

For a while I thought I wanted to get the latest tagged version, but I don't think so anymore. The tagged versions are our releases and interim realeases, not our daily builds. So they always build (I discreetly coughed here). I don't think I want to save and tag our daily builds even when they work. 

Here is a question ... do people save and tag daily builds that are just daily builds? You'd end up with a lot of tagged versions in CVS. A build only occurs if the CVS changes, but in this environment that is just about every day.

What I've (through a lot of frustration) discovered is that there does not appear to be a way of breaking the connection between the name used for checkout and the name used for jarring. If there is, I would be thrilled to find it.

The solution may turn out to be as simple as letting this automated system build the way it wants to and then renaming the files at the end. This would probably mean deleting the generated zip files and then rezipping with the renamed jar files. This seems wrong.

So there are really two parts to my question. 1. Am I thinking of all this in the right way ... that is, am I trying to do something unconventional (I don't want to) and is there a more standard way of providing daily builds to users?  And 2) if my goal is a conventional one, how do people interact with these automatically generated files to get the job done? 

 -ted



More information about the Javamail mailing list