You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by Tony Obermeit <to...@compuserve.com> on 2003/02/10 21:26:48 UTC
Re: Running build.xml located in jar file
Some time ago Erik replied to this post, in the skeleton he referenced,
(listed below), the code loads the project from a file and runs it. My
question is this, I typically run ant specifying a propertyfile on the
command line argument, how can I get the programmatic invocation of ant to
recognize / load the properties from a file. I can't specify the property
file within the build script for a variety of reasons.
By the way, Erik, thanks for the work you put in to the "Java Development
with Ant" book, it has been a great help!!!
>But it seems folks should be integrating with Ant by emulating what
>Main.main does rather than simply invoking it directly. I've toyed with
>writing a servlet that ran Ant once upon a time. I just dug up the code
>and here it is:
>
> final Project project = new Project();
> AntListener listener = new AntListener();
> project.addBuildListener(listener);
> File buildFile = new File(buildFile);
>
> Throwable exception = null;
> try {
> project.fireBuildStarted();
> project.init();
> ProjectHelper.configureProject(project, buildFile);
> project.executeTarget(project.getDefaultTarget());
> }
> catch (BuildException e) {
> exception = e;
> }
> finally {
> project.fireBuildFinished(exception);
>
> Writer out = response.getWriter();
> out.write(listener.getLog());
> }
>
>AntListener is just a BuildListener implementing class that collects all
>the log messages for grabbing later (in the finally clause). This is
>just a simple example, and one that probably needs lots of improvement
>to be solid, but its better than calling Main.main, IMO.
>
> Erik
At 12:43 PM 12/01/2003 -0500, you wrote:
>To do it programmatically, I'd recommend you just emulate what Main.main()
>does in your own class. See a post I made providing a basic skeleton of
>Java code to run an Ant project from a servlet from a couple of weeks ago
>(or so). You wouldn't do it as a java.io.File (at least not without
>refactoring Ant). You'd first pull a resource from a JAR (or URL) to a
>local filesystem file, then run that through Ant's existing mechanisms.
>
> Erik
>
>
>
>On Saturday, January 11, 2003, at 02:44 PM, Tony Obermeit wrote:
>>Thanks for the quick reply,
>>
>>Is it possible to do this programmatically? I can then reference the
>>build file and pass it to the ant.Main class as a java.io.File object?
>>
>>Tony
>>
>>At 05:32 AM 11/01/2003 -0500, you wrote:
>>>Currently Ant only runs a build file located on the filesystem.
>>>
>>>A workaround would be to ship with a minimal build.xml along with the
>>>JAR which does an <unjar> to bootstrap and <ant> the primary build file,
>>>although this is probably just as good as deploying the real build file.
>>>
>>>It would be nice for Ant to be modified to allow getting at build files
>>>from an archive resource or from a URL.
>>>
>>> Erik
>>>
>>>
>>>On Saturday, January 11, 2003, at 12:51 AM, Tony Obermeit wrote:
>>>>I have created a jar file that include the ant class files, a build.xml
>>>>file and my application class files.
>>>>
>>>>I have not been able to get ant to find the build file within the jar
>>>>file. If I place the build file in the same directory as the jar file,
>>>>and run ant as follows:
>>>>
>>>>java -cp application.jar org.apache.tools.ant.Main, ant runs the build
>>>>file successfully. The problem is when the build file is not in a
>>>>directory, but instead is bundled within the jar file, then ant reports
>>>>"Build file: build.xml does not exist, Build Failed".
>>>>
>>>>I'm using a single jar file (which includes ant class files,
>>>>application class files and build.xml) so that my entire application,
>>>>and it's setup scripts (build.xml) can be easily deployed. For what
>>>>it's worth, the build file contains sql tasks that I used to create
>>>>database tables when running the application.
>>>>
>>>>Any help would be appreciated.
>>>>
>>>>Thanks
>>>>
>>>>Tony
>>>>
>>>>
>>>>
>>>>--
>>>>To unsubscribe, e-mail:
>>>><ma...@jakarta.apache.org>
>>>>For additional commands, e-mail: <ma...@jakarta.apache.org>
>>>
>>>
>>>--
>>>To unsubscribe, e-mail:
>>><ma...@jakarta.apache.org>
>>>For additional commands, e-mail: <ma...@jakarta.apache.org>
>>
>>
>>
>>
>>--
>>To unsubscribe, e-mail:
>><ma...@jakarta.apache.org>
>>For additional commands, e-mail: <ma...@jakarta.apache.org>
>>
>
>
>--
>To unsubscribe, e-mail: <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: Running build.xml located in jar file
Posted by Erik Hatcher <ja...@ehatchersolutions.com>.
On Monday, February 10, 2003, at 03:26 PM, Tony Obermeit wrote:
> Some time ago Erik replied to this post, in the skeleton he
> referenced, (listed below), the code loads the project from a file and
> runs it. My question is this, I typically run ant specifying a
> propertyfile on the command line argument, how can I get the
> programmatic invocation of ant to recognize / load the properties from
> a file. I can't specify the property file within the build script for
> a variety of reasons.
>
Have a look at Ant's Main.java and emulate that. the -propertyfile
handling is done there, and you are attempting to emulate what is done
there to configure a Project. You'll just have to use good ol'
cut-and-paste inheritance on this one, I'm afraid.
> By the way, Erik, thanks for the work you put in to the "Java
> Development with Ant" book, it has been a great help!!!
Thank you!
Erik