Steve Loughran wrote:
Rick Moynihan wrote:


Obviously I understand that ANT is a critically important piece of infrastructure for a huge number of projects, and I understand that ANT's primary focus is and always will be as a build tool.

My only point is that *MAYBE* if it is not too much work, ANT can be adapted to also fill this role. I have looked at other projects such as:

* http://classworlds.codehaus.org/launchusage.html
* http://wrapper.tanukisoftware.org/doc/english/introduction.html

However I personally feel that reusing ANT build files for this sort of thing is a more elegant solution, as it can leverage knowledge of ANT for configuration of classpaths, properties, etc...

I actually use <wrapper> and do think its file format is a bit low-level. FWIW, the way we use it is to bridge up to somehing that is derived from Ant's launcher code, from which we jump out to the smartfrog deployment stuff.

Here is why I did it this way
-wrapper works, is fully debugged, tested against various JDKs and versions of windows -smartfrog is somewhat debugged, uses reflection tricks to catch java signal handlers on the Unix+Sun JVM combination, and handles shutdown.

Ant launcher does one thing nicely: loads directories of JARs, in a single classloader that you can't then discard. It doesnt do cleanup when terminated aggressively.

Wrapper looks to be a good piece of software, and one that I have considered, though I'm reluctant to throw away the ANT launch scripts I am using with commons-launcher. Commons Daemon:

http://jakarta.apache.org/commons/daemon/

is another Apache project which aims to do what wrapper does, i.e. start daemons/services in a cross platform manner. Unfortunately it also lacks any community to speak of and appears to have a long list of unresolved JIRA issues.

At the moment I have no experience with either wrapper or commons-daemon as I see no need to take on their extra complexity. Your use of ant-launcher, wrapper, and smartfrog seems like a nice bespoke solution to the problem. What I would love is to be able to start Java software with an ANT script at the command line, then later reuse the same/(highly-similar) ANT script in combination with something like wrapper or Commons Daemon. In this latter case the ANT script would be used in place of wrappers configuration of the classpath. I think that this integration would (if possible) be really nice; it is perhaps also a generalisation of the type of system you have implemented.


*If* the ant-launcher could be modified to support this use-case without any external dependencies etc, I feel it would nicely fill a need in the Java community. Obviously adopting ANT to a task it was not designed for is not a decision that should be taken lightly, but I feel it would be valuable, and can't see why it should impact ANT's use as a build tool.

Well, there's varions types of changes.

(a) small tweaks (e.g the -main) option, that let people do interesting things that keep ant a build too.
(b) big changes with unpredictable maintenance costs that either
  -stop ant building from the ground up or
  -increase test and maintenance costs

I'm obviously not proposing we adopt (b). I also use ANT extensively as a build tool and would hate to see ANT's role as a build tool adversely effected. I would hope what I am proposing is *EXACTLY* in line with (a), though I am rather clueless as to all the issues involved. Infact the use of a -main option is exactly what I had in mind.



At the end of the day, I like commons launcher and would be completely happy with it, if it had a community behind it, willing to fix the few bugs I have encountered and drive some more features.

So, my current options appear to be either:

1. Suggest the ANT project adopts the use-case of an application launcher.

Remember that "wrapper" is far more complex than Ant's launcher, as it starts from NT services and linux daemons. We dont want to go there.

Also up and coming is more dynamic ways of setting up the classpath, like Ivy, OSGi, etc. Making a good command line and daemon launcher for that would be interesting.

I entirely agree on ANT NOT becoming a process for starting services/daemons. What I think I am suggesting is the use of ANT as a DSL for setting a Java programs classpath, various properties, and perhaps some clean-up or initialisation (think tidying log files, creating directories etc). If this same system could then be used by wrapper/commons-daemon then so much the better, as I too strongly felt that wrappers configuration was too low level.


2. Patch commons-launcher myself (which I may well do) and persuade the project maintainers to accept my patches (unlikely given the projects lack of developers/community).

actually, an inactive project is often the one most willing to take on warm bodies

True.


3. Fork commons-launcher and maintain it outside of Apache.

Given that I have a copy of some of ant's launcher code inside our own codebase, this is the easiest option for a single-use project, but avoids a lot of the feedback that a proper, live community can do.

Agreed. I actually have a slightly modified version of commons-launcher which allows use of ant <import>'s.

The first suggestion is the lowest cost to me, as it means others can maintain, run and manage the project. I appreciate that many factors are likely to prevent this. If ANT can be modified in the manner you suggest, what are the barriers?



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to