1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
---|
2 | <HTML>
|
---|
3 | <HEAD>
|
---|
4 | <LINK REL=STYLESHEET TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
|
---|
5 | <META NAME="GENERATOR" CONTENT="Java2HTML Version 1.4">
|
---|
6 | <TITLE>org.tp23.antinstaller.antmod.Main (Java2HTML)</TITLE>
|
---|
7 | </HEAD>
|
---|
8 | <BODY><TABLE id="Header" border="0" cellpadding="0" cellspacing="0" width="100%">
|
---|
9 | <tr>
|
---|
10 | <td colspan="2" width="33%"> </td>
|
---|
11 | <td align="center" colspan="2" width="33%">
|
---|
12 | <font size="4" class="ClassName">Main.java</font>
|
---|
13 | </td>
|
---|
14 | <td align="right" colspan="2" width="33%"> </td>
|
---|
15 | </tr>
|
---|
16 | </TABLE>
|
---|
17 | <pre CLASS="Classes">
|
---|
18 | <FONT CLASS="LN">1 </FONT><A NAME="1"></A><FONT CLASS="MultiLineComment">/*
|
---|
19 | <FONT CLASS="LN">2 </FONT><A NAME="2"></A> * Copyright 2000-2004 The Apache Software Foundation
|
---|
20 | <FONT CLASS="LN">3 </FONT><A NAME="3"></A> *
|
---|
21 | <FONT CLASS="LN">4 </FONT><A NAME="4"></A> * Licensed under the Apache License, Version 2.0 (the "License");
|
---|
22 | <FONT CLASS="LN">5 </FONT><A NAME="5"></A> * you may not use this file except in compliance with the License.
|
---|
23 | <FONT CLASS="LN">6 </FONT><A NAME="6"></A> * You may obtain a copy of the License at
|
---|
24 | <FONT CLASS="LN">7 </FONT><A NAME="7"></A> *
|
---|
25 | <FONT CLASS="LN">8 </FONT><A NAME="8"></A> * http://www.apache.org/licenses/LICENSE-2.0
|
---|
26 | <FONT CLASS="LN">9 </FONT><A NAME="9"></A> *
|
---|
27 | <FONT CLASS="LN">10</FONT><A NAME="10"></A> * Unless required by applicable law or agreed to in writing, software
|
---|
28 | <FONT CLASS="LN">11</FONT><A NAME="11"></A> * distributed under the License is distributed on an "AS IS" BASIS,
|
---|
29 | <FONT CLASS="LN">12</FONT><A NAME="12"></A> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
---|
30 | <FONT CLASS="LN">13</FONT><A NAME="13"></A> * See the License for the specific language governing permissions and
|
---|
31 | <FONT CLASS="LN">14</FONT><A NAME="14"></A> * limitations under the License.
|
---|
32 | <FONT CLASS="LN">15</FONT><A NAME="15"></A> *
|
---|
33 | <FONT CLASS="LN">16</FONT><A NAME="16"></A> */</FONT>
|
---|
34 | <FONT CLASS="LN">17</FONT><A NAME="17"></A><FONT CLASS="Package">package</FONT> <A HREF="../../../../org.tp23.antinstaller.antmod.index.html" target="packageFrame">org.tp23.antinstaller.antmod</A>;
|
---|
35 | <FONT CLASS="LN">18</FONT><A NAME="18"></A>
|
---|
36 | <FONT CLASS="LN">19</FONT><A NAME="19"></A><FONT CLASS="Import">import</FONT> java.io.File;
|
---|
37 | <FONT CLASS="LN">20</FONT><A NAME="20"></A><FONT CLASS="Import">import</FONT> java.io.FileInputStream;
|
---|
38 | <FONT CLASS="LN">21</FONT><A NAME="21"></A><FONT CLASS="Import">import</FONT> java.io.FileOutputStream;
|
---|
39 | <FONT CLASS="LN">22</FONT><A NAME="22"></A><FONT CLASS="Import">import</FONT> java.io.IOException;
|
---|
40 | <FONT CLASS="LN">23</FONT><A NAME="23"></A><FONT CLASS="Import">import</FONT> java.io.InputStream;
|
---|
41 | <FONT CLASS="LN">24</FONT><A NAME="24"></A><FONT CLASS="Import">import</FONT> java.io.PrintStream;
|
---|
42 | <FONT CLASS="LN">25</FONT><A NAME="25"></A><FONT CLASS="Import">import</FONT> java.util.Enumeration;
|
---|
43 | <FONT CLASS="LN">26</FONT><A NAME="26"></A><FONT CLASS="Import">import</FONT> java.util.Properties;
|
---|
44 | <FONT CLASS="LN">27</FONT><A NAME="27"></A><FONT CLASS="Import">import</FONT> java.util.Vector;
|
---|
45 | <FONT CLASS="LN">28</FONT><A NAME="28"></A>
|
---|
46 | <FONT CLASS="LN">29</FONT><A NAME="29"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.BuildException;
|
---|
47 | <FONT CLASS="LN">30</FONT><A NAME="30"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.BuildListener;
|
---|
48 | <FONT CLASS="LN">31</FONT><A NAME="31"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.BuildLogger;
|
---|
49 | <FONT CLASS="LN">32</FONT><A NAME="32"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.DefaultLogger;
|
---|
50 | <FONT CLASS="LN">33</FONT><A NAME="33"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.Diagnostics;
|
---|
51 | <FONT CLASS="LN">34</FONT><A NAME="34"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.ExitStatusException;
|
---|
52 | <FONT CLASS="LN">35</FONT><A NAME="35"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.Project;
|
---|
53 | <FONT CLASS="LN">36</FONT><A NAME="36"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.ProjectHelper;
|
---|
54 | <FONT CLASS="LN">37</FONT><A NAME="37"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.Target;
|
---|
55 | <FONT CLASS="LN">38</FONT><A NAME="38"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.input.DefaultInputHandler;
|
---|
56 | <FONT CLASS="LN">39</FONT><A NAME="39"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.input.InputHandler;
|
---|
57 | <FONT CLASS="LN">40</FONT><A NAME="40"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.launch.AntMain;
|
---|
58 | <FONT CLASS="LN">41</FONT><A NAME="41"></A><FONT CLASS="Import">import</FONT> org.apache.tools.ant.util.JavaEnvUtils;
|
---|
59 | <FONT CLASS="LN">42</FONT><A NAME="42"></A><FONT CLASS="Import">import</FONT> <A HREF="../../../../org/tp23/antinstaller/InstallerContext.java.html">org.tp23.antinstaller.InstallerContext</A>;
|
---|
60 | <FONT CLASS="LN">43</FONT><A NAME="43"></A><FONT CLASS="Import">import</FONT> <A HREF="../../../../org/tp23/antinstaller/PropertiesFileRenderer.java.html">org.tp23.antinstaller.PropertiesFileRenderer</A>;
|
---|
61 | <FONT CLASS="LN">44</FONT><A NAME="44"></A>
|
---|
62 | <FONT CLASS="LN">45</FONT><A NAME="45"></A>
|
---|
63 | <FONT CLASS="LN">46</FONT><A NAME="46"></A><FONT CLASS="FormalComment">/**
|
---|
64 | <FONT CLASS="LN">47</FONT><A NAME="47"></A> * Command line entry point into Ant. This class is entered via the
|
---|
65 | <FONT CLASS="LN">48</FONT><A NAME="48"></A> * canonical `public static void main` entry point and reads the
|
---|
66 | <FONT CLASS="LN">49</FONT><A NAME="49"></A> * command line arguments. It then assembles and executes an Ant
|
---|
67 | <FONT CLASS="LN">50</FONT><A NAME="50"></A> * project.
|
---|
68 | <FONT CLASS="LN">51</FONT><A NAME="51"></A> * <p>
|
---|
69 | <FONT CLASS="LN">52</FONT><A NAME="52"></A> * If you integrating Ant into some other tool, this is not the class
|
---|
70 | <FONT CLASS="LN">53</FONT><A NAME="53"></A> * to use as an entry point. Please see the source code of this
|
---|
71 | <FONT CLASS="LN">54</FONT><A NAME="54"></A> * class to see how it manipulates the Ant project classes.
|
---|
72 | <FONT CLASS="LN">55</FONT><A NAME="55"></A> *
|
---|
73 | <FONT CLASS="LN">56</FONT><A NAME="56"></A>* This file has been modified by Paul Hinds for Antinstaller and is not the same
|
---|
74 | <FONT CLASS="LN">57</FONT><A NAME="57"></A>* as the one delivered with Ant 1.6
|
---|
75 | <FONT CLASS="LN">58</FONT><A NAME="58"></A>* @version $Id: Main.java,v 1.5 2007/01/12 10:41:48 anothermwilson Exp $
|
---|
76 | <FONT CLASS="LN">59</FONT><A NAME="59"></A> */</FONT>
|
---|
77 | <FONT CLASS="LN">60</FONT><A NAME="60"></A><FONT CLASS="Public">public</FONT> <FONT CLASS="Class">class</FONT> Main <FONT CLASS="Implements">implements</FONT> AntMain {
|
---|
78 | <FONT CLASS="LN">61</FONT><A NAME="61"></A>
|
---|
79 | <FONT CLASS="LN">62</FONT><A NAME="62"></A> <FONT CLASS="FormalComment">/** The default build file name. */</FONT>
|
---|
80 | <FONT CLASS="LN">63</FONT><A NAME="63"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Final">final</FONT> String DEFAULT_BUILD_FILENAME = <FONT CLASS="StringLiteral">"build.xml"</FONT>;
|
---|
81 | <FONT CLASS="LN">64</FONT><A NAME="64"></A>
|
---|
82 | <FONT CLASS="LN">65</FONT><A NAME="65"></A> <FONT CLASS="FormalComment">/** Our current message output status. Follows Project.MSG_XXX. */</FONT>
|
---|
83 | <FONT CLASS="LN">66</FONT><A NAME="66"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Int">int</FONT> msgOutputLevel = Project.MSG_INFO;
|
---|
84 | <FONT CLASS="LN">67</FONT><A NAME="67"></A>
|
---|
85 | <FONT CLASS="LN">68</FONT><A NAME="68"></A> <FONT CLASS="FormalComment">/** File that we are using for configuration. */</FONT>
|
---|
86 | <FONT CLASS="LN">69</FONT><A NAME="69"></A> <FONT CLASS="Private">private</FONT> File buildFile; <FONT CLASS="MultiLineComment">/* null */</FONT>
|
---|
87 | <FONT CLASS="LN">70</FONT><A NAME="70"></A>
|
---|
88 | <FONT CLASS="LN">71</FONT><A NAME="71"></A> <FONT CLASS="FormalComment">/** Stream to use for logging. */</FONT>
|
---|
89 | <FONT CLASS="LN">72</FONT><A NAME="72"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> PrintStream out = System.out;
|
---|
90 | <FONT CLASS="LN">73</FONT><A NAME="73"></A>
|
---|
91 | <FONT CLASS="LN">74</FONT><A NAME="74"></A> <FONT CLASS="FormalComment">/** Stream that we are using for logging error messages. */</FONT>
|
---|
92 | <FONT CLASS="LN">75</FONT><A NAME="75"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> PrintStream err = System.err;
|
---|
93 | <FONT CLASS="LN">76</FONT><A NAME="76"></A>
|
---|
94 | <FONT CLASS="LN">77</FONT><A NAME="77"></A> <FONT CLASS="FormalComment">/** The build targets. */</FONT>
|
---|
95 | <FONT CLASS="LN">78</FONT><A NAME="78"></A> <FONT CLASS="Private">private</FONT> Vector targets = <FONT CLASS="New">new</FONT> Vector();
|
---|
96 | <FONT CLASS="LN">79</FONT><A NAME="79"></A>
|
---|
97 | <FONT CLASS="LN">80</FONT><A NAME="80"></A> <FONT CLASS="FormalComment">/** Set of properties that can be used by tasks. */</FONT>
|
---|
98 | <FONT CLASS="LN">81</FONT><A NAME="81"></A> <FONT CLASS="Private">private</FONT> Properties definedProps = <FONT CLASS="New">new</FONT> Properties();
|
---|
99 | <FONT CLASS="LN">82</FONT><A NAME="82"></A>
|
---|
100 | <FONT CLASS="LN">83</FONT><A NAME="83"></A> <FONT CLASS="FormalComment">/** Names of classes to add as listeners to project. */</FONT>
|
---|
101 | <FONT CLASS="LN">84</FONT><A NAME="84"></A> <FONT CLASS="Private">private</FONT> Vector listeners = <FONT CLASS="New">new</FONT> Vector(<FONT CLASS="IntegerLiteral">1</FONT>);
|
---|
102 | <FONT CLASS="LN">85</FONT><A NAME="85"></A>
|
---|
103 | <FONT CLASS="LN">86</FONT><A NAME="86"></A> <FONT CLASS="FormalComment">/** File names of property files to load on startup. */</FONT>
|
---|
104 | <FONT CLASS="LN">87</FONT><A NAME="87"></A> <FONT CLASS="Private">private</FONT> Vector propertyFiles = <FONT CLASS="New">new</FONT> Vector(<FONT CLASS="IntegerLiteral">1</FONT>);
|
---|
105 | <FONT CLASS="LN">88</FONT><A NAME="88"></A>
|
---|
106 | <FONT CLASS="LN">89</FONT><A NAME="89"></A> <FONT CLASS="FormalComment">/** Indicates whether this build is to support interactive input */</FONT>
|
---|
107 | <FONT CLASS="LN">90</FONT><A NAME="90"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Boolean">boolean</FONT> allowInput = <FONT CLASS="True">true</FONT>;
|
---|
108 | <FONT CLASS="LN">91</FONT><A NAME="91"></A>
|
---|
109 | <FONT CLASS="LN">92</FONT><A NAME="92"></A> <FONT CLASS="FormalComment">/** keep going mode */</FONT>
|
---|
110 | <FONT CLASS="LN">93</FONT><A NAME="93"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Boolean">boolean</FONT> keepGoingMode = <FONT CLASS="False">false</FONT>;
|
---|
111 | <FONT CLASS="LN">94</FONT><A NAME="94"></A>
|
---|
112 | <FONT CLASS="LN">95</FONT><A NAME="95"></A> <FONT CLASS="FormalComment">/**
|
---|
113 | <FONT CLASS="LN">96</FONT><A NAME="96"></A> * The Ant logger class. There may be only one logger. It will have
|
---|
114 | <FONT CLASS="LN">97</FONT><A NAME="97"></A> * the right to use the 'out' PrintStream. The class must implements the
|
---|
115 | <FONT CLASS="LN">98</FONT><A NAME="98"></A> * BuildLogger interface.
|
---|
116 | <FONT CLASS="LN">99</FONT><A NAME="99"></A> */</FONT>
|
---|
117 | <FONT CLASS="LN">00</FONT><A NAME="100"></A> <FONT CLASS="Private">private</FONT> String loggerClassname = <FONT CLASS="Null">null</FONT>;
|
---|
118 | <FONT CLASS="LN">01</FONT><A NAME="101"></A>
|
---|
119 | <FONT CLASS="LN">02</FONT><A NAME="102"></A> <FONT CLASS="FormalComment">/**
|
---|
120 | <FONT CLASS="LN">03</FONT><A NAME="103"></A> * The Ant InputHandler class. There may be only one input
|
---|
121 | <FONT CLASS="LN">04</FONT><A NAME="104"></A> * handler.
|
---|
122 | <FONT CLASS="LN">05</FONT><A NAME="105"></A> */</FONT>
|
---|
123 | <FONT CLASS="LN">06</FONT><A NAME="106"></A> <FONT CLASS="Private">private</FONT> String inputHandlerClassname = <FONT CLASS="Null">null</FONT>;
|
---|
124 | <FONT CLASS="LN">07</FONT><A NAME="107"></A>
|
---|
125 | <FONT CLASS="LN">08</FONT><A NAME="108"></A> <FONT CLASS="FormalComment">/**
|
---|
126 | <FONT CLASS="LN">09</FONT><A NAME="109"></A> * Whether or not output to the log is to be unadorned.
|
---|
127 | <FONT CLASS="LN">10</FONT><A NAME="110"></A> */</FONT>
|
---|
128 | <FONT CLASS="LN">11</FONT><A NAME="111"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Boolean">boolean</FONT> emacsMode = <FONT CLASS="False">false</FONT>;
|
---|
129 | <FONT CLASS="LN">12</FONT><A NAME="112"></A>
|
---|
130 | <FONT CLASS="LN">13</FONT><A NAME="113"></A> <FONT CLASS="FormalComment">/**
|
---|
131 | <FONT CLASS="LN">14</FONT><A NAME="114"></A> * Whether or not this instance has successfully been
|
---|
132 | <FONT CLASS="LN">15</FONT><A NAME="115"></A> * constructed and is ready to run.
|
---|
133 | <FONT CLASS="LN">16</FONT><A NAME="116"></A> */</FONT>
|
---|
134 | <FONT CLASS="LN">17</FONT><A NAME="117"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Boolean">boolean</FONT> readyToRun = <FONT CLASS="False">false</FONT>;
|
---|
135 | <FONT CLASS="LN">18</FONT><A NAME="118"></A>
|
---|
136 | <FONT CLASS="LN">19</FONT><A NAME="119"></A> <FONT CLASS="FormalComment">/**
|
---|
137 | <FONT CLASS="LN">20</FONT><A NAME="120"></A> * Whether or not we should only parse and display the project help
|
---|
138 | <FONT CLASS="LN">21</FONT><A NAME="121"></A> * information.
|
---|
139 | <FONT CLASS="LN">22</FONT><A NAME="122"></A> */</FONT>
|
---|
140 | <FONT CLASS="LN">23</FONT><A NAME="123"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Boolean">boolean</FONT> projectHelp = <FONT CLASS="False">false</FONT>;
|
---|
141 | <FONT CLASS="LN">24</FONT><A NAME="124"></A>
|
---|
142 | <FONT CLASS="LN">25</FONT><A NAME="125"></A> <FONT CLASS="FormalComment">/**
|
---|
143 | <FONT CLASS="LN">26</FONT><A NAME="126"></A> * Whether or not a logfile is being used. This is used to
|
---|
144 | <FONT CLASS="LN">27</FONT><A NAME="127"></A> * check if the output streams must be closed.
|
---|
145 | <FONT CLASS="LN">28</FONT><A NAME="128"></A> */</FONT>
|
---|
146 | <FONT CLASS="LN">29</FONT><A NAME="129"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Boolean">boolean</FONT> isLogFileUsed = <FONT CLASS="False">false</FONT>;
|
---|
147 | <FONT CLASS="LN">30</FONT><A NAME="130"></A>
|
---|
148 | <FONT CLASS="LN">31</FONT><A NAME="131"></A> <FONT CLASS="FormalComment">/**
|
---|
149 | <FONT CLASS="LN">32</FONT><A NAME="132"></A> * optional thread priority
|
---|
150 | <FONT CLASS="LN">33</FONT><A NAME="133"></A> */</FONT>
|
---|
151 | <FONT CLASS="LN">34</FONT><A NAME="134"></A> <FONT CLASS="Private">private</FONT> Integer threadPriority = <FONT CLASS="Null">null</FONT>;
|
---|
152 | <FONT CLASS="LN">35</FONT><A NAME="135"></A> <FONT CLASS="FormalComment">/**
|
---|
153 | <FONT CLASS="LN">36</FONT><A NAME="136"></A> * Installer Context
|
---|
154 | <FONT CLASS="LN">37</FONT><A NAME="137"></A> */</FONT>
|
---|
155 | <FONT CLASS="LN">38</FONT><A NAME="138"></A> <FONT CLASS="Private">private</FONT> <A HREF="../../../../org/tp23/antinstaller/InstallerContext.java.html">InstallerContext</A> ctx = <FONT CLASS="Null">null</FONT>;
|
---|
156 | <FONT CLASS="LN">39</FONT><A NAME="139"></A>
|
---|
157 | <FONT CLASS="LN">40</FONT><A NAME="140"></A> <FONT CLASS="FormalComment">/**
|
---|
158 | <FONT CLASS="LN">41</FONT><A NAME="141"></A> * Prints the message of the Throwable if it (the message) is not
|
---|
159 | <FONT CLASS="LN">42</FONT><A NAME="142"></A> * <code>null</code>.
|
---|
160 | <FONT CLASS="LN">43</FONT><A NAME="143"></A> *
|
---|
161 | <FONT CLASS="LN">44</FONT><A NAME="144"></A> * @param t Throwable to print the message of.
|
---|
162 | <FONT CLASS="LN">45</FONT><A NAME="145"></A> * Must not be <code>null</code>.
|
---|
163 | <FONT CLASS="LN">46</FONT><A NAME="146"></A> */</FONT>
|
---|
164 | <FONT CLASS="LN">47</FONT><A NAME="147"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Void">void</FONT> printMessage(Throwable t) {
|
---|
165 | <FONT CLASS="LN">48</FONT><A NAME="148"></A> String message = t.getMessage();
|
---|
166 | <FONT CLASS="LN">49</FONT><A NAME="149"></A> <FONT CLASS="If">if</FONT> (message != <FONT CLASS="Null">null</FONT>) {
|
---|
167 | <FONT CLASS="LN">50</FONT><A NAME="150"></A> System.err.println(message);
|
---|
168 | <FONT CLASS="LN">51</FONT><A NAME="151"></A> }
|
---|
169 | <FONT CLASS="LN">52</FONT><A NAME="152"></A> }
|
---|
170 | <FONT CLASS="LN">53</FONT><A NAME="153"></A>
|
---|
171 | <FONT CLASS="LN">54</FONT><A NAME="154"></A> <FONT CLASS="FormalComment">/**
|
---|
172 | <FONT CLASS="LN">55</FONT><A NAME="155"></A> * Creates a new instance of this class using the
|
---|
173 | <FONT CLASS="LN">56</FONT><A NAME="156"></A> * arguments specified, gives it any extra user properties which have been
|
---|
174 | <FONT CLASS="LN">57</FONT><A NAME="157"></A> * specified, and then runs the build using the classloader provided.
|
---|
175 | <FONT CLASS="LN">58</FONT><A NAME="158"></A> *
|
---|
176 | <FONT CLASS="LN">59</FONT><A NAME="159"></A> * @param args Command line arguments. Must not be <code>null</code>.
|
---|
177 | <FONT CLASS="LN">60</FONT><A NAME="160"></A> * @param additionalUserProperties Any extra properties to use in this
|
---|
178 | <FONT CLASS="LN">61</FONT><A NAME="161"></A> * build. May be <code>null</code>, which is the equivalent to
|
---|
179 | <FONT CLASS="LN">62</FONT><A NAME="162"></A> * passing in an empty set of properties.
|
---|
180 | <FONT CLASS="LN">63</FONT><A NAME="163"></A> * @param coreLoader Classloader used for core classes. May be
|
---|
181 | <FONT CLASS="LN">64</FONT><A NAME="164"></A> * <code>null</code> in which case the system classloader is used.
|
---|
182 | <FONT CLASS="LN">65</FONT><A NAME="165"></A> */</FONT>
|
---|
183 | <FONT CLASS="LN">66</FONT><A NAME="166"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Void">void</FONT> start(String[] args, Properties additionalUserProperties,
|
---|
184 | <FONT CLASS="LN">67</FONT><A NAME="167"></A> ClassLoader coreLoader) {
|
---|
185 | <FONT CLASS="LN">68</FONT><A NAME="168"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> UnsupportedOperationException(<FONT CLASS="StringLiteral">"Required by Ant interface but not used"</FONT>);
|
---|
186 | <FONT CLASS="LN">69</FONT><A NAME="169"></A> <FONT CLASS="SingleLineComment">//Main m = new Main();
|
---|
187 | <FONT CLASS="LN">70</FONT><A NAME="170"></A></FONT> <FONT CLASS="SingleLineComment">//m.startAnt(args, additionalUserProperties, coreLoader);
|
---|
188 | <FONT CLASS="LN">71</FONT><A NAME="171"></A></FONT> }
|
---|
189 | <FONT CLASS="LN">72</FONT><A NAME="172"></A>
|
---|
190 | <FONT CLASS="LN">73</FONT><A NAME="173"></A>
|
---|
191 | <FONT CLASS="LN">74</FONT><A NAME="174"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Void">void</FONT> startAnt(String[] args, Properties additionalUserProperties,
|
---|
192 | <FONT CLASS="LN">75</FONT><A NAME="175"></A> ClassLoader coreLoader) {
|
---|
193 | <FONT CLASS="LN">76</FONT><A NAME="176"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> UnsupportedOperationException(<FONT CLASS="StringLiteral">"Required by Ant interface but not used"</FONT>);
|
---|
194 | <FONT CLASS="LN">77</FONT><A NAME="177"></A> <FONT CLASS="SingleLineComment">//startAnt(args, additionalUserProperties, coreLoader, null); // FindBugs does not like this
|
---|
195 | <FONT CLASS="LN">78</FONT><A NAME="178"></A></FONT> }
|
---|
196 | <FONT CLASS="LN">79</FONT><A NAME="179"></A> <FONT CLASS="FormalComment">/**
|
---|
197 | <FONT CLASS="LN">80</FONT><A NAME="180"></A> * Start Ant
|
---|
198 | <FONT CLASS="LN">81</FONT><A NAME="181"></A> * @param args command line args
|
---|
199 | <FONT CLASS="LN">82</FONT><A NAME="182"></A> * @param additionalUserProperties properties to set beyond those that
|
---|
200 | <FONT CLASS="LN">83</FONT><A NAME="183"></A> * may be specified on the args list
|
---|
201 | <FONT CLASS="LN">84</FONT><A NAME="184"></A> * @param coreLoader - not used
|
---|
202 | <FONT CLASS="LN">85</FONT><A NAME="185"></A> * @return the return code that was used for System.exit() in the original Ant
|
---|
203 | <FONT CLASS="LN">86</FONT><A NAME="186"></A> *
|
---|
204 | <FONT CLASS="LN">87</FONT><A NAME="187"></A> * @since Ant 1.6
|
---|
205 | <FONT CLASS="LN">88</FONT><A NAME="188"></A> */</FONT>
|
---|
206 | <FONT CLASS="LN">89</FONT><A NAME="189"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Int">int</FONT> startAnt(String[] args, Properties additionalUserProperties,
|
---|
207 | <FONT CLASS="LN">90</FONT><A NAME="190"></A> ClassLoader coreLoader, <A HREF="../../../../org/tp23/antinstaller/InstallerContext.java.html">InstallerContext</A> ctx) {
|
---|
208 | <FONT CLASS="LN">91</FONT><A NAME="191"></A> <FONT CLASS="This">this</FONT>.ctx = ctx;
|
---|
209 | <FONT CLASS="LN">92</FONT><A NAME="192"></A> out = ctx.getAntOutputRenderer().getOut();
|
---|
210 | <FONT CLASS="LN">93</FONT><A NAME="193"></A> err = ctx.getAntOutputRenderer().getErr();
|
---|
211 | <FONT CLASS="LN">94</FONT><A NAME="194"></A> <FONT CLASS="Try">try</FONT> {
|
---|
212 | <FONT CLASS="LN">95</FONT><A NAME="195"></A> Diagnostics.validateVersion();
|
---|
213 | <FONT CLASS="LN">96</FONT><A NAME="196"></A> processArgs(args);
|
---|
214 | <FONT CLASS="LN">97</FONT><A NAME="197"></A> } <FONT CLASS="Catch">catch</FONT> (Throwable exc) {
|
---|
215 | <FONT CLASS="LN">98</FONT><A NAME="198"></A> handleLogfile();
|
---|
216 | <FONT CLASS="LN">99</FONT><A NAME="199"></A> printMessage(exc);
|
---|
217 | <FONT CLASS="LN">00</FONT><A NAME="200"></A> <FONT CLASS="Return">return</FONT> <FONT CLASS="IntegerLiteral">1</FONT>;
|
---|
218 | <FONT CLASS="LN">01</FONT><A NAME="201"></A> }
|
---|
219 | <FONT CLASS="LN">02</FONT><A NAME="202"></A>
|
---|
220 | <FONT CLASS="LN">03</FONT><A NAME="203"></A> <FONT CLASS="If">if</FONT> (additionalUserProperties != <FONT CLASS="Null">null</FONT>) {
|
---|
221 | <FONT CLASS="LN">04</FONT><A NAME="204"></A> <FONT CLASS="For">for</FONT> (Enumeration e = additionalUserProperties.keys();
|
---|
222 | <FONT CLASS="LN">05</FONT><A NAME="205"></A> e.hasMoreElements();) {
|
---|
223 | <FONT CLASS="LN">06</FONT><A NAME="206"></A> String key = (String) e.nextElement();
|
---|
224 | <FONT CLASS="LN">07</FONT><A NAME="207"></A> String property = additionalUserProperties.getProperty(key);
|
---|
225 | <FONT CLASS="LN">08</FONT><A NAME="208"></A> definedProps.put(key, property);
|
---|
226 | <FONT CLASS="LN">09</FONT><A NAME="209"></A> }
|
---|
227 | <FONT CLASS="LN">10</FONT><A NAME="210"></A> }
|
---|
228 | <FONT CLASS="LN">11</FONT><A NAME="211"></A>
|
---|
229 | <FONT CLASS="LN">12</FONT><A NAME="212"></A> <FONT CLASS="SingleLineComment">// expect the worst
|
---|
230 | <FONT CLASS="LN">13</FONT><A NAME="213"></A></FONT> <FONT CLASS="Int">int</FONT> exitCode = <FONT CLASS="IntegerLiteral">1</FONT>;
|
---|
231 | <FONT CLASS="LN">14</FONT><A NAME="214"></A> <FONT CLASS="Try">try</FONT> {
|
---|
232 | <FONT CLASS="LN">15</FONT><A NAME="215"></A> <FONT CLASS="Try">try</FONT> {
|
---|
233 | <FONT CLASS="LN">16</FONT><A NAME="216"></A> runBuild(coreLoader);
|
---|
234 | <FONT CLASS="LN">17</FONT><A NAME="217"></A> exitCode = <FONT CLASS="IntegerLiteral">0</FONT>;
|
---|
235 | <FONT CLASS="LN">18</FONT><A NAME="218"></A> } <FONT CLASS="Catch">catch</FONT> (ExitStatusException ese) {
|
---|
236 | <FONT CLASS="LN">19</FONT><A NAME="219"></A> exitCode = ese.getStatus();
|
---|
237 | <FONT CLASS="LN">20</FONT><A NAME="220"></A> <FONT CLASS="If">if</FONT> (exitCode != <FONT CLASS="IntegerLiteral">0</FONT>) {
|
---|
238 | <FONT CLASS="LN">21</FONT><A NAME="221"></A> <FONT CLASS="Throw">throw</FONT> ese;
|
---|
239 | <FONT CLASS="LN">22</FONT><A NAME="222"></A> }
|
---|
240 | <FONT CLASS="LN">23</FONT><A NAME="223"></A> }
|
---|
241 | <FONT CLASS="LN">24</FONT><A NAME="224"></A> } <FONT CLASS="Catch">catch</FONT> (BuildException be) {
|
---|
242 | <FONT CLASS="LN">25</FONT><A NAME="225"></A> <FONT CLASS="If">if</FONT> (err != System.err) {
|
---|
243 | <FONT CLASS="LN">26</FONT><A NAME="226"></A> printMessage(be);
|
---|
244 | <FONT CLASS="LN">27</FONT><A NAME="227"></A> }
|
---|
245 | <FONT CLASS="LN">28</FONT><A NAME="228"></A> } <FONT CLASS="Catch">catch</FONT> (Throwable exc) {
|
---|
246 | <FONT CLASS="LN">29</FONT><A NAME="229"></A> exc.printStackTrace();
|
---|
247 | <FONT CLASS="LN">30</FONT><A NAME="230"></A> printMessage(exc);
|
---|
248 | <FONT CLASS="LN">31</FONT><A NAME="231"></A> } <FONT CLASS="Finally">finally</FONT> {
|
---|
249 | <FONT CLASS="LN">32</FONT><A NAME="232"></A> handleLogfile();
|
---|
250 | <FONT CLASS="LN">33</FONT><A NAME="233"></A> }
|
---|
251 | <FONT CLASS="LN">34</FONT><A NAME="234"></A> <FONT CLASS="SingleLineComment">//mod by Paul Hinds
|
---|
252 | <FONT CLASS="LN">35</FONT><A NAME="235"></A></FONT> <FONT CLASS="Return">return</FONT> exitCode;
|
---|
253 | <FONT CLASS="LN">36</FONT><A NAME="236"></A> <FONT CLASS="SingleLineComment">//System.exit(exitCode);
|
---|
254 | <FONT CLASS="LN">37</FONT><A NAME="237"></A></FONT> }
|
---|
255 | <FONT CLASS="LN">38</FONT><A NAME="238"></A>
|
---|
256 | <FONT CLASS="LN">39</FONT><A NAME="239"></A> <FONT CLASS="FormalComment">/**
|
---|
257 | <FONT CLASS="LN">40</FONT><A NAME="240"></A> * Close logfiles, if we have been writing to them.
|
---|
258 | <FONT CLASS="LN">41</FONT><A NAME="241"></A> *
|
---|
259 | <FONT CLASS="LN">42</FONT><A NAME="242"></A> * @since Ant 1.6
|
---|
260 | <FONT CLASS="LN">43</FONT><A NAME="243"></A> */</FONT>
|
---|
261 | <FONT CLASS="LN">44</FONT><A NAME="244"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Void">void</FONT> handleLogfile() {
|
---|
262 | <FONT CLASS="LN">45</FONT><A NAME="245"></A> <FONT CLASS="If">if</FONT> (isLogFileUsed) {
|
---|
263 | <FONT CLASS="LN">46</FONT><A NAME="246"></A> <FONT CLASS="If">if</FONT> (out != <FONT CLASS="Null">null</FONT>) {
|
---|
264 | <FONT CLASS="LN">47</FONT><A NAME="247"></A> <FONT CLASS="Try">try</FONT> {
|
---|
265 | <FONT CLASS="LN">48</FONT><A NAME="248"></A> out.close();
|
---|
266 | <FONT CLASS="LN">49</FONT><A NAME="249"></A> } <FONT CLASS="Catch">catch</FONT> (<FONT CLASS="Final">final</FONT> Exception e) {
|
---|
267 | <FONT CLASS="LN">50</FONT><A NAME="250"></A> <FONT CLASS="SingleLineComment">//ignore
|
---|
268 | <FONT CLASS="LN">51</FONT><A NAME="251"></A></FONT> }
|
---|
269 | <FONT CLASS="LN">52</FONT><A NAME="252"></A> }
|
---|
270 | <FONT CLASS="LN">53</FONT><A NAME="253"></A> <FONT CLASS="If">if</FONT> (err != <FONT CLASS="Null">null</FONT>) {
|
---|
271 | <FONT CLASS="LN">54</FONT><A NAME="254"></A> <FONT CLASS="Try">try</FONT> {
|
---|
272 | <FONT CLASS="LN">55</FONT><A NAME="255"></A> err.close();
|
---|
273 | <FONT CLASS="LN">56</FONT><A NAME="256"></A> } <FONT CLASS="Catch">catch</FONT> (<FONT CLASS="Final">final</FONT> Exception e) {
|
---|
274 | <FONT CLASS="LN">57</FONT><A NAME="257"></A> <FONT CLASS="SingleLineComment">//ignore
|
---|
275 | <FONT CLASS="LN">58</FONT><A NAME="258"></A></FONT> }
|
---|
276 | <FONT CLASS="LN">59</FONT><A NAME="259"></A> }
|
---|
277 | <FONT CLASS="LN">60</FONT><A NAME="260"></A> }
|
---|
278 | <FONT CLASS="LN">61</FONT><A NAME="261"></A> }
|
---|
279 | <FONT CLASS="LN">62</FONT><A NAME="262"></A>
|
---|
280 | <FONT CLASS="LN">63</FONT><A NAME="263"></A> <FONT CLASS="FormalComment">/**
|
---|
281 | <FONT CLASS="LN">64</FONT><A NAME="264"></A> * Command line entry point. This method kicks off the building
|
---|
282 | <FONT CLASS="LN">65</FONT><A NAME="265"></A> * of a project object and executes a build using either a given
|
---|
283 | <FONT CLASS="LN">66</FONT><A NAME="266"></A> * target or the default target.
|
---|
284 | <FONT CLASS="LN">67</FONT><A NAME="267"></A> *
|
---|
285 | <FONT CLASS="LN">68</FONT><A NAME="268"></A> * @param args Command line arguments. Must not be <code>null</code>.
|
---|
286 | <FONT CLASS="LN">69</FONT><A NAME="269"></A> */</FONT>
|
---|
287 | <FONT CLASS="LN">70</FONT><A NAME="270"></A><FONT CLASS="SingleLineComment">// public static void main(String[] args) {
|
---|
288 | <FONT CLASS="LN">71</FONT><A NAME="271"></A></FONT><FONT CLASS="SingleLineComment">// start(args, null, null);
|
---|
289 | <FONT CLASS="LN">72</FONT><A NAME="272"></A></FONT><FONT CLASS="SingleLineComment">// }
|
---|
290 | <FONT CLASS="LN">73</FONT><A NAME="273"></A></FONT><FONT CLASS="SingleLineComment">//
|
---|
291 | <FONT CLASS="LN">74</FONT><A NAME="274"></A></FONT> <FONT CLASS="FormalComment">/**
|
---|
292 | <FONT CLASS="LN">75</FONT><A NAME="275"></A> * Constructor used when creating Main for later arg processing
|
---|
293 | <FONT CLASS="LN">76</FONT><A NAME="276"></A> * and startup
|
---|
294 | <FONT CLASS="LN">77</FONT><A NAME="277"></A> */</FONT>
|
---|
295 | <FONT CLASS="LN">78</FONT><A NAME="278"></A> <FONT CLASS="Public">public</FONT> Main() {
|
---|
296 | <FONT CLASS="LN">79</FONT><A NAME="279"></A> }
|
---|
297 | <FONT CLASS="LN">80</FONT><A NAME="280"></A>
|
---|
298 | <FONT CLASS="LN">81</FONT><A NAME="281"></A> <FONT CLASS="FormalComment">/**
|
---|
299 | <FONT CLASS="LN">82</FONT><A NAME="282"></A> * Sole constructor, which parses and deals with command line
|
---|
300 | <FONT CLASS="LN">83</FONT><A NAME="283"></A> * arguments.
|
---|
301 | <FONT CLASS="LN">84</FONT><A NAME="284"></A> *
|
---|
302 | <FONT CLASS="LN">85</FONT><A NAME="285"></A> * @param args Command line arguments. Must not be <code>null</code>.
|
---|
303 | <FONT CLASS="LN">86</FONT><A NAME="286"></A> *
|
---|
304 | <FONT CLASS="LN">87</FONT><A NAME="287"></A> * @exception BuildException if the specified build file doesn't exist
|
---|
305 | <FONT CLASS="LN">88</FONT><A NAME="288"></A> * or is a directory.
|
---|
306 | <FONT CLASS="LN">89</FONT><A NAME="289"></A> *
|
---|
307 | <FONT CLASS="LN">90</FONT><A NAME="290"></A> * @deprecated
|
---|
308 | <FONT CLASS="LN">91</FONT><A NAME="291"></A> */</FONT>
|
---|
309 | <FONT CLASS="LN">92</FONT><A NAME="292"></A> <FONT CLASS="Protected">protected</FONT> Main(String[] args) <FONT CLASS="Throws">throws</FONT> BuildException {
|
---|
310 | <FONT CLASS="LN">93</FONT><A NAME="293"></A> processArgs(args);
|
---|
311 | <FONT CLASS="LN">94</FONT><A NAME="294"></A> }
|
---|
312 | <FONT CLASS="LN">95</FONT><A NAME="295"></A>
|
---|
313 | <FONT CLASS="LN">96</FONT><A NAME="296"></A> <FONT CLASS="FormalComment">/**
|
---|
314 | <FONT CLASS="LN">97</FONT><A NAME="297"></A> * Process command line arguments.
|
---|
315 | <FONT CLASS="LN">98</FONT><A NAME="298"></A> * When ant is started from Launcher, the -lib argument does not get
|
---|
316 | <FONT CLASS="LN">99</FONT><A NAME="299"></A> * passed through to this routine.
|
---|
317 | <FONT CLASS="LN">00</FONT><A NAME="300"></A> *
|
---|
318 | <FONT CLASS="LN">01</FONT><A NAME="301"></A> * @param args the command line arguments.
|
---|
319 | <FONT CLASS="LN">02</FONT><A NAME="302"></A> *
|
---|
320 | <FONT CLASS="LN">03</FONT><A NAME="303"></A> * @since Ant 1.6
|
---|
321 | <FONT CLASS="LN">04</FONT><A NAME="304"></A> */</FONT>
|
---|
322 | <FONT CLASS="LN">05</FONT><A NAME="305"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Void">void</FONT> processArgs(String[] args) {
|
---|
323 | <FONT CLASS="LN">06</FONT><A NAME="306"></A> String searchForThis = <FONT CLASS="Null">null</FONT>;
|
---|
324 | <FONT CLASS="LN">07</FONT><A NAME="307"></A> PrintStream logTo = <FONT CLASS="Null">null</FONT>;
|
---|
325 | <FONT CLASS="LN">08</FONT><A NAME="308"></A>
|
---|
326 | <FONT CLASS="LN">09</FONT><A NAME="309"></A> <FONT CLASS="SingleLineComment">// cycle through given args
|
---|
327 | <FONT CLASS="LN">10</FONT><A NAME="310"></A></FONT>
|
---|
328 | <FONT CLASS="LN">11</FONT><A NAME="311"></A> <FONT CLASS="For">for</FONT> (<FONT CLASS="Int">int</FONT> i = <FONT CLASS="IntegerLiteral">0</FONT>; i < args.length; i++) {
|
---|
329 | <FONT CLASS="LN">12</FONT><A NAME="312"></A> String arg = args[i];
|
---|
330 | <FONT CLASS="LN">13</FONT><A NAME="313"></A>
|
---|
331 | <FONT CLASS="LN">14</FONT><A NAME="314"></A> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-help"</FONT>) || arg.equals(<FONT CLASS="StringLiteral">"-h"</FONT>)) {
|
---|
332 | <FONT CLASS="LN">15</FONT><A NAME="315"></A> printUsage();
|
---|
333 | <FONT CLASS="LN">16</FONT><A NAME="316"></A> <FONT CLASS="Return">return</FONT>;
|
---|
334 | <FONT CLASS="LN">17</FONT><A NAME="317"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-version"</FONT>)) {
|
---|
335 | <FONT CLASS="LN">18</FONT><A NAME="318"></A> printVersion();
|
---|
336 | <FONT CLASS="LN">19</FONT><A NAME="319"></A> <FONT CLASS="Return">return</FONT>;
|
---|
337 | <FONT CLASS="LN">20</FONT><A NAME="320"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-diagnostics"</FONT>)) {
|
---|
338 | <FONT CLASS="LN">21</FONT><A NAME="321"></A> Diagnostics.doReport(System.out);
|
---|
339 | <FONT CLASS="LN">22</FONT><A NAME="322"></A> <FONT CLASS="Return">return</FONT>;
|
---|
340 | <FONT CLASS="LN">23</FONT><A NAME="323"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-quiet"</FONT>) || arg.equals(<FONT CLASS="StringLiteral">"-q"</FONT>)) {
|
---|
341 | <FONT CLASS="LN">24</FONT><A NAME="324"></A> msgOutputLevel = Project.MSG_WARN;
|
---|
342 | <FONT CLASS="LN">25</FONT><A NAME="325"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-verbose"</FONT>) || arg.equals(<FONT CLASS="StringLiteral">"-v"</FONT>)) {
|
---|
343 | <FONT CLASS="LN">26</FONT><A NAME="326"></A> printVersion();
|
---|
344 | <FONT CLASS="LN">27</FONT><A NAME="327"></A> msgOutputLevel = Project.MSG_VERBOSE;
|
---|
345 | <FONT CLASS="LN">28</FONT><A NAME="328"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-debug"</FONT>) || arg.equals(<FONT CLASS="StringLiteral">"-d"</FONT>)) {
|
---|
346 | <FONT CLASS="LN">29</FONT><A NAME="329"></A> printVersion();
|
---|
347 | <FONT CLASS="LN">30</FONT><A NAME="330"></A> msgOutputLevel = Project.MSG_DEBUG;
|
---|
348 | <FONT CLASS="LN">31</FONT><A NAME="331"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-noinput"</FONT>)) {
|
---|
349 | <FONT CLASS="LN">32</FONT><A NAME="332"></A> allowInput = <FONT CLASS="False">false</FONT>;
|
---|
350 | <FONT CLASS="LN">33</FONT><A NAME="333"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-logfile"</FONT>) || arg.equals(<FONT CLASS="StringLiteral">"-l"</FONT>)) {
|
---|
351 | <FONT CLASS="LN">34</FONT><A NAME="334"></A> <FONT CLASS="Try">try</FONT> {
|
---|
352 | <FONT CLASS="LN">35</FONT><A NAME="335"></A> File logFile = <FONT CLASS="New">new</FONT> File(args[i + <FONT CLASS="IntegerLiteral">1</FONT>]);
|
---|
353 | <FONT CLASS="LN">36</FONT><A NAME="336"></A> i++;
|
---|
354 | <FONT CLASS="LN">37</FONT><A NAME="337"></A> logTo = <FONT CLASS="New">new</FONT> PrintStream(<FONT CLASS="New">new</FONT> FileOutputStream(logFile));
|
---|
355 | <FONT CLASS="LN">38</FONT><A NAME="338"></A> isLogFileUsed = <FONT CLASS="True">true</FONT>;
|
---|
356 | <FONT CLASS="LN">39</FONT><A NAME="339"></A> } <FONT CLASS="Catch">catch</FONT> (IOException ioe) {
|
---|
357 | <FONT CLASS="LN">40</FONT><A NAME="340"></A> String msg = <FONT CLASS="StringLiteral">"Cannot write on the specified log file. "</FONT>
|
---|
358 | <FONT CLASS="LN">41</FONT><A NAME="341"></A> + <FONT CLASS="StringLiteral">"Make sure the path exists and you have write "</FONT>
|
---|
359 | <FONT CLASS="LN">42</FONT><A NAME="342"></A> + <FONT CLASS="StringLiteral">"permissions."</FONT>;
|
---|
360 | <FONT CLASS="LN">43</FONT><A NAME="343"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(msg);
|
---|
361 | <FONT CLASS="LN">44</FONT><A NAME="344"></A> } <FONT CLASS="Catch">catch</FONT> (ArrayIndexOutOfBoundsException aioobe) {
|
---|
362 | <FONT CLASS="LN">45</FONT><A NAME="345"></A> String msg = <FONT CLASS="StringLiteral">"You must specify a log file when "</FONT>
|
---|
363 | <FONT CLASS="LN">46</FONT><A NAME="346"></A> + <FONT CLASS="StringLiteral">"using the -log argument"</FONT>;
|
---|
364 | <FONT CLASS="LN">47</FONT><A NAME="347"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(msg);
|
---|
365 | <FONT CLASS="LN">48</FONT><A NAME="348"></A> }
|
---|
366 | <FONT CLASS="LN">49</FONT><A NAME="349"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-buildfile"</FONT>) || arg.equals(<FONT CLASS="StringLiteral">"-file"</FONT>)
|
---|
367 | <FONT CLASS="LN">50</FONT><A NAME="350"></A> || arg.equals(<FONT CLASS="StringLiteral">"-f"</FONT>)) {
|
---|
368 | <FONT CLASS="LN">51</FONT><A NAME="351"></A> <FONT CLASS="Try">try</FONT> {
|
---|
369 | <FONT CLASS="LN">52</FONT><A NAME="352"></A> buildFile = <FONT CLASS="New">new</FONT> File(args[i + <FONT CLASS="IntegerLiteral">1</FONT>].replace(<FONT CLASS="CharacerLiteral">'/'</FONT>, File.separatorChar));
|
---|
370 | <FONT CLASS="LN">53</FONT><A NAME="353"></A> i++;
|
---|
371 | <FONT CLASS="LN">54</FONT><A NAME="354"></A> } <FONT CLASS="Catch">catch</FONT> (ArrayIndexOutOfBoundsException aioobe) {
|
---|
372 | <FONT CLASS="LN">55</FONT><A NAME="355"></A> String msg = <FONT CLASS="StringLiteral">"You must specify a buildfile when "</FONT>
|
---|
373 | <FONT CLASS="LN">56</FONT><A NAME="356"></A> + <FONT CLASS="StringLiteral">"using the -buildfile argument"</FONT>;
|
---|
374 | <FONT CLASS="LN">57</FONT><A NAME="357"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(msg);
|
---|
375 | <FONT CLASS="LN">58</FONT><A NAME="358"></A> }
|
---|
376 | <FONT CLASS="LN">59</FONT><A NAME="359"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-listener"</FONT>)) {
|
---|
377 | <FONT CLASS="LN">60</FONT><A NAME="360"></A> <FONT CLASS="Try">try</FONT> {
|
---|
378 | <FONT CLASS="LN">61</FONT><A NAME="361"></A> listeners.addElement(args[i + <FONT CLASS="IntegerLiteral">1</FONT>]);
|
---|
379 | <FONT CLASS="LN">62</FONT><A NAME="362"></A> i++;
|
---|
380 | <FONT CLASS="LN">63</FONT><A NAME="363"></A> } <FONT CLASS="Catch">catch</FONT> (ArrayIndexOutOfBoundsException aioobe) {
|
---|
381 | <FONT CLASS="LN">64</FONT><A NAME="364"></A> String msg = <FONT CLASS="StringLiteral">"You must specify a classname when "</FONT>
|
---|
382 | <FONT CLASS="LN">65</FONT><A NAME="365"></A> + <FONT CLASS="StringLiteral">"using the -listener argument"</FONT>;
|
---|
383 | <FONT CLASS="LN">66</FONT><A NAME="366"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(msg);
|
---|
384 | <FONT CLASS="LN">67</FONT><A NAME="367"></A> }
|
---|
385 | <FONT CLASS="LN">68</FONT><A NAME="368"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.startsWith(<FONT CLASS="StringLiteral">"-D"</FONT>)) {
|
---|
386 | <FONT CLASS="LN">69</FONT><A NAME="369"></A>
|
---|
387 | <FONT CLASS="LN">70</FONT><A NAME="370"></A> <FONT CLASS="MultiLineComment">/* Interestingly enough, we get to here when a user
|
---|
388 | <FONT CLASS="LN">71</FONT><A NAME="371"></A> * uses -Dname=value. However, in some cases, the OS
|
---|
389 | <FONT CLASS="LN">72</FONT><A NAME="372"></A> * goes ahead and parses this out to args
|
---|
390 | <FONT CLASS="LN">73</FONT><A NAME="373"></A> * {"-Dname", "value"}
|
---|
391 | <FONT CLASS="LN">74</FONT><A NAME="374"></A> * so instead of parsing on "=", we just make the "-D"
|
---|
392 | <FONT CLASS="LN">75</FONT><A NAME="375"></A> * characters go away and skip one argument forward.
|
---|
393 | <FONT CLASS="LN">76</FONT><A NAME="376"></A> *
|
---|
394 | <FONT CLASS="LN">77</FONT><A NAME="377"></A> * I don't know how to predict when the JDK is going
|
---|
395 | <FONT CLASS="LN">78</FONT><A NAME="378"></A> * to help or not, so we simply look for the equals sign.
|
---|
396 | <FONT CLASS="LN">79</FONT><A NAME="379"></A> */</FONT>
|
---|
397 | <FONT CLASS="LN">80</FONT><A NAME="380"></A>
|
---|
398 | <FONT CLASS="LN">81</FONT><A NAME="381"></A> String name = arg.substring(<FONT CLASS="IntegerLiteral">2</FONT>, arg.length());
|
---|
399 | <FONT CLASS="LN">82</FONT><A NAME="382"></A> String value = <FONT CLASS="Null">null</FONT>;
|
---|
400 | <FONT CLASS="LN">83</FONT><A NAME="383"></A> <FONT CLASS="Int">int</FONT> posEq = name.indexOf(<FONT CLASS="StringLiteral">"="</FONT>);
|
---|
401 | <FONT CLASS="LN">84</FONT><A NAME="384"></A> <FONT CLASS="If">if</FONT> (posEq > <FONT CLASS="IntegerLiteral">0</FONT>) {
|
---|
402 | <FONT CLASS="LN">85</FONT><A NAME="385"></A> value = name.substring(posEq + <FONT CLASS="IntegerLiteral">1</FONT>);
|
---|
403 | <FONT CLASS="LN">86</FONT><A NAME="386"></A> name = name.substring(<FONT CLASS="IntegerLiteral">0</FONT>, posEq);
|
---|
404 | <FONT CLASS="LN">87</FONT><A NAME="387"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (i < args.length - <FONT CLASS="IntegerLiteral">1</FONT>) {
|
---|
405 | <FONT CLASS="LN">88</FONT><A NAME="388"></A> value = args[++i];
|
---|
406 | <FONT CLASS="LN">89</FONT><A NAME="389"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
407 | <FONT CLASS="LN">90</FONT><A NAME="390"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"Missing value for property "</FONT>
|
---|
408 | <FONT CLASS="LN">91</FONT><A NAME="391"></A> + name);
|
---|
409 | <FONT CLASS="LN">92</FONT><A NAME="392"></A> }
|
---|
410 | <FONT CLASS="LN">93</FONT><A NAME="393"></A>
|
---|
411 | <FONT CLASS="LN">94</FONT><A NAME="394"></A> definedProps.put(name, value);
|
---|
412 | <FONT CLASS="LN">95</FONT><A NAME="395"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-logger"</FONT>)) {
|
---|
413 | <FONT CLASS="LN">96</FONT><A NAME="396"></A> <FONT CLASS="If">if</FONT> (loggerClassname != <FONT CLASS="Null">null</FONT>) {
|
---|
414 | <FONT CLASS="LN">97</FONT><A NAME="397"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"Only one logger class may "</FONT>
|
---|
415 | <FONT CLASS="LN">98</FONT><A NAME="398"></A> + <FONT CLASS="StringLiteral">" be specified."</FONT>);
|
---|
416 | <FONT CLASS="LN">99</FONT><A NAME="399"></A> }
|
---|
417 | <FONT CLASS="LN">00</FONT><A NAME="400"></A> <FONT CLASS="Try">try</FONT> {
|
---|
418 | <FONT CLASS="LN">01</FONT><A NAME="401"></A> loggerClassname = args[++i];
|
---|
419 | <FONT CLASS="LN">02</FONT><A NAME="402"></A> } <FONT CLASS="Catch">catch</FONT> (ArrayIndexOutOfBoundsException aioobe) {
|
---|
420 | <FONT CLASS="LN">03</FONT><A NAME="403"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"You must specify a classname when"</FONT>
|
---|
421 | <FONT CLASS="LN">04</FONT><A NAME="404"></A> + <FONT CLASS="StringLiteral">" using the -logger argument"</FONT>);
|
---|
422 | <FONT CLASS="LN">05</FONT><A NAME="405"></A> }
|
---|
423 | <FONT CLASS="LN">06</FONT><A NAME="406"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-inputhandler"</FONT>)) {
|
---|
424 | <FONT CLASS="LN">07</FONT><A NAME="407"></A> <FONT CLASS="If">if</FONT> (inputHandlerClassname != <FONT CLASS="Null">null</FONT>) {
|
---|
425 | <FONT CLASS="LN">08</FONT><A NAME="408"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"Only one input handler class may "</FONT>
|
---|
426 | <FONT CLASS="LN">09</FONT><A NAME="409"></A> + <FONT CLASS="StringLiteral">"be specified."</FONT>);
|
---|
427 | <FONT CLASS="LN">10</FONT><A NAME="410"></A> }
|
---|
428 | <FONT CLASS="LN">11</FONT><A NAME="411"></A> <FONT CLASS="Try">try</FONT> {
|
---|
429 | <FONT CLASS="LN">12</FONT><A NAME="412"></A> inputHandlerClassname = args[++i];
|
---|
430 | <FONT CLASS="LN">13</FONT><A NAME="413"></A> } <FONT CLASS="Catch">catch</FONT> (ArrayIndexOutOfBoundsException aioobe) {
|
---|
431 | <FONT CLASS="LN">14</FONT><A NAME="414"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"You must specify a classname when"</FONT>
|
---|
432 | <FONT CLASS="LN">15</FONT><A NAME="415"></A> + <FONT CLASS="StringLiteral">" using the -inputhandler"</FONT>
|
---|
433 | <FONT CLASS="LN">16</FONT><A NAME="416"></A> + <FONT CLASS="StringLiteral">" argument"</FONT>);
|
---|
434 | <FONT CLASS="LN">17</FONT><A NAME="417"></A> }
|
---|
435 | <FONT CLASS="LN">18</FONT><A NAME="418"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-emacs"</FONT>) || arg.equals(<FONT CLASS="StringLiteral">"-e"</FONT>)) {
|
---|
436 | <FONT CLASS="LN">19</FONT><A NAME="419"></A> emacsMode = <FONT CLASS="True">true</FONT>;
|
---|
437 | <FONT CLASS="LN">20</FONT><A NAME="420"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-projecthelp"</FONT>) || arg.equals(<FONT CLASS="StringLiteral">"-p"</FONT>)) {
|
---|
438 | <FONT CLASS="LN">21</FONT><A NAME="421"></A> <FONT CLASS="SingleLineComment">// set the flag to display the targets and quit
|
---|
439 | <FONT CLASS="LN">22</FONT><A NAME="422"></A></FONT> projectHelp = <FONT CLASS="True">true</FONT>;
|
---|
440 | <FONT CLASS="LN">23</FONT><A NAME="423"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-find"</FONT>) || arg.equals(<FONT CLASS="StringLiteral">"-s"</FONT>)) {
|
---|
441 | <FONT CLASS="LN">24</FONT><A NAME="424"></A> <FONT CLASS="SingleLineComment">// eat up next arg if present, default to build.xml
|
---|
442 | <FONT CLASS="LN">25</FONT><A NAME="425"></A></FONT> <FONT CLASS="If">if</FONT> (i < args.length - <FONT CLASS="IntegerLiteral">1</FONT>) {
|
---|
443 | <FONT CLASS="LN">26</FONT><A NAME="426"></A> searchForThis = args[++i];
|
---|
444 | <FONT CLASS="LN">27</FONT><A NAME="427"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
445 | <FONT CLASS="LN">28</FONT><A NAME="428"></A> searchForThis = DEFAULT_BUILD_FILENAME;
|
---|
446 | <FONT CLASS="LN">29</FONT><A NAME="429"></A> }
|
---|
447 | <FONT CLASS="LN">30</FONT><A NAME="430"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.startsWith(<FONT CLASS="StringLiteral">"-propertyfile"</FONT>)) {
|
---|
448 | <FONT CLASS="LN">31</FONT><A NAME="431"></A> <FONT CLASS="Try">try</FONT> {
|
---|
449 | <FONT CLASS="LN">32</FONT><A NAME="432"></A> propertyFiles.addElement(args[i + <FONT CLASS="IntegerLiteral">1</FONT>]);
|
---|
450 | <FONT CLASS="LN">33</FONT><A NAME="433"></A> i++;
|
---|
451 | <FONT CLASS="LN">34</FONT><A NAME="434"></A> } <FONT CLASS="Catch">catch</FONT> (ArrayIndexOutOfBoundsException aioobe) {
|
---|
452 | <FONT CLASS="LN">35</FONT><A NAME="435"></A> String msg = <FONT CLASS="StringLiteral">"You must specify a property filename when "</FONT>
|
---|
453 | <FONT CLASS="LN">36</FONT><A NAME="436"></A> + <FONT CLASS="StringLiteral">"using the -propertyfile argument"</FONT>;
|
---|
454 | <FONT CLASS="LN">37</FONT><A NAME="437"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(msg);
|
---|
455 | <FONT CLASS="LN">38</FONT><A NAME="438"></A> }
|
---|
456 | <FONT CLASS="LN">39</FONT><A NAME="439"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-k"</FONT>) || arg.equals(<FONT CLASS="StringLiteral">"-keep-going"</FONT>)) {
|
---|
457 | <FONT CLASS="LN">40</FONT><A NAME="440"></A> keepGoingMode = <FONT CLASS="True">true</FONT>;
|
---|
458 | <FONT CLASS="LN">41</FONT><A NAME="441"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.equals(<FONT CLASS="StringLiteral">"-nice"</FONT>)) {
|
---|
459 | <FONT CLASS="LN">42</FONT><A NAME="442"></A> <FONT CLASS="Try">try</FONT> {
|
---|
460 | <FONT CLASS="LN">43</FONT><A NAME="443"></A> threadPriority=Integer.decode(args[i + <FONT CLASS="IntegerLiteral">1</FONT>]);
|
---|
461 | <FONT CLASS="LN">44</FONT><A NAME="444"></A> } <FONT CLASS="Catch">catch</FONT> (ArrayIndexOutOfBoundsException aioobe) {
|
---|
462 | <FONT CLASS="LN">45</FONT><A NAME="445"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(
|
---|
463 | <FONT CLASS="LN">46</FONT><A NAME="446"></A> <FONT CLASS="StringLiteral">"You must supply a niceness value (1-10)"</FONT>+
|
---|
464 | <FONT CLASS="LN">47</FONT><A NAME="447"></A> <FONT CLASS="StringLiteral">" after the -nice option"</FONT>);
|
---|
465 | <FONT CLASS="LN">48</FONT><A NAME="448"></A> } <FONT CLASS="Catch">catch</FONT> (NumberFormatException e) {
|
---|
466 | <FONT CLASS="LN">49</FONT><A NAME="449"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"Unrecognized niceness value: "</FONT> +
|
---|
467 | <FONT CLASS="LN">50</FONT><A NAME="450"></A> args[i + <FONT CLASS="IntegerLiteral">1</FONT>]);
|
---|
468 | <FONT CLASS="LN">51</FONT><A NAME="451"></A> }
|
---|
469 | <FONT CLASS="LN">52</FONT><A NAME="452"></A> i++;
|
---|
470 | <FONT CLASS="LN">53</FONT><A NAME="453"></A> <FONT CLASS="If">if</FONT>(threadPriority.intValue()<Thread.MIN_PRIORITY ||
|
---|
471 | <FONT CLASS="LN">54</FONT><A NAME="454"></A> threadPriority.intValue()>Thread.MAX_PRIORITY) {
|
---|
472 | <FONT CLASS="LN">55</FONT><A NAME="455"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(
|
---|
473 | <FONT CLASS="LN">56</FONT><A NAME="456"></A> <FONT CLASS="StringLiteral">"Niceness value is out of the range 1-10"</FONT>);
|
---|
474 | <FONT CLASS="LN">57</FONT><A NAME="457"></A> }
|
---|
475 | <FONT CLASS="LN">58</FONT><A NAME="458"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (arg.startsWith(<FONT CLASS="StringLiteral">"-"</FONT>)) {
|
---|
476 | <FONT CLASS="LN">59</FONT><A NAME="459"></A> <FONT CLASS="SingleLineComment">// we don't have any more args to recognize!
|
---|
477 | <FONT CLASS="LN">60</FONT><A NAME="460"></A></FONT> String msg = <FONT CLASS="StringLiteral">"Unknown argument: "</FONT> + arg;
|
---|
478 | <FONT CLASS="LN">61</FONT><A NAME="461"></A> System.out.println(msg);
|
---|
479 | <FONT CLASS="LN">62</FONT><A NAME="462"></A> printUsage();
|
---|
480 | <FONT CLASS="LN">63</FONT><A NAME="463"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">""</FONT>);
|
---|
481 | <FONT CLASS="LN">64</FONT><A NAME="464"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
482 | <FONT CLASS="LN">65</FONT><A NAME="465"></A> <FONT CLASS="SingleLineComment">// if it's no other arg, it may be the target
|
---|
483 | <FONT CLASS="LN">66</FONT><A NAME="466"></A></FONT> targets.addElement(arg);
|
---|
484 | <FONT CLASS="LN">67</FONT><A NAME="467"></A> }
|
---|
485 | <FONT CLASS="LN">68</FONT><A NAME="468"></A> }
|
---|
486 | <FONT CLASS="LN">69</FONT><A NAME="469"></A>
|
---|
487 | <FONT CLASS="LN">70</FONT><A NAME="470"></A> <FONT CLASS="SingleLineComment">// if buildFile was not specified on the command line,
|
---|
488 | <FONT CLASS="LN">71</FONT><A NAME="471"></A></FONT> <FONT CLASS="If">if</FONT> (buildFile == <FONT CLASS="Null">null</FONT>) {
|
---|
489 | <FONT CLASS="LN">72</FONT><A NAME="472"></A> <FONT CLASS="SingleLineComment">// but -find then search for it
|
---|
490 | <FONT CLASS="LN">73</FONT><A NAME="473"></A></FONT> <FONT CLASS="If">if</FONT> (searchForThis != <FONT CLASS="Null">null</FONT>) {
|
---|
491 | <FONT CLASS="LN">74</FONT><A NAME="474"></A> buildFile = findBuildFile(System.getProperty(<FONT CLASS="StringLiteral">"user.dir"</FONT>),
|
---|
492 | <FONT CLASS="LN">75</FONT><A NAME="475"></A> searchForThis);
|
---|
493 | <FONT CLASS="LN">76</FONT><A NAME="476"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
494 | <FONT CLASS="LN">77</FONT><A NAME="477"></A> buildFile = <FONT CLASS="New">new</FONT> File(DEFAULT_BUILD_FILENAME);
|
---|
495 | <FONT CLASS="LN">78</FONT><A NAME="478"></A> }
|
---|
496 | <FONT CLASS="LN">79</FONT><A NAME="479"></A> }
|
---|
497 | <FONT CLASS="LN">80</FONT><A NAME="480"></A>
|
---|
498 | <FONT CLASS="LN">81</FONT><A NAME="481"></A> <FONT CLASS="SingleLineComment">// make sure buildfile exists
|
---|
499 | <FONT CLASS="LN">82</FONT><A NAME="482"></A></FONT> <FONT CLASS="If">if</FONT> (!buildFile.exists()) {
|
---|
500 | <FONT CLASS="LN">83</FONT><A NAME="483"></A> System.out.println(<FONT CLASS="StringLiteral">"Buildfile: "</FONT> + buildFile + <FONT CLASS="StringLiteral">" does not exist!"</FONT>);
|
---|
501 | <FONT CLASS="LN">84</FONT><A NAME="484"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"Build failed"</FONT>);
|
---|
502 | <FONT CLASS="LN">85</FONT><A NAME="485"></A> }
|
---|
503 | <FONT CLASS="LN">86</FONT><A NAME="486"></A>
|
---|
504 | <FONT CLASS="LN">87</FONT><A NAME="487"></A> <FONT CLASS="SingleLineComment">// make sure it's not a directory (this falls into the ultra
|
---|
505 | <FONT CLASS="LN">88</FONT><A NAME="488"></A></FONT> <FONT CLASS="SingleLineComment">// paranoid lets check everything category
|
---|
506 | <FONT CLASS="LN">89</FONT><A NAME="489"></A></FONT>
|
---|
507 | <FONT CLASS="LN">90</FONT><A NAME="490"></A> <FONT CLASS="If">if</FONT> (buildFile.isDirectory()) {
|
---|
508 | <FONT CLASS="LN">91</FONT><A NAME="491"></A> System.out.println(<FONT CLASS="StringLiteral">"What? Buildfile: "</FONT> + buildFile + <FONT CLASS="StringLiteral">" is a dir!"</FONT>);
|
---|
509 | <FONT CLASS="LN">92</FONT><A NAME="492"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"Build failed"</FONT>);
|
---|
510 | <FONT CLASS="LN">93</FONT><A NAME="493"></A> }
|
---|
511 | <FONT CLASS="LN">94</FONT><A NAME="494"></A>
|
---|
512 | <FONT CLASS="LN">95</FONT><A NAME="495"></A> <FONT CLASS="SingleLineComment">// Load the property files specified by -propertyfile
|
---|
513 | <FONT CLASS="LN">96</FONT><A NAME="496"></A></FONT> <FONT CLASS="For">for</FONT> (<FONT CLASS="Int">int</FONT> propertyFileIndex = <FONT CLASS="IntegerLiteral">0</FONT>;
|
---|
514 | <FONT CLASS="LN">97</FONT><A NAME="497"></A> propertyFileIndex < propertyFiles.size();
|
---|
515 | <FONT CLASS="LN">98</FONT><A NAME="498"></A> propertyFileIndex++) {
|
---|
516 | <FONT CLASS="LN">99</FONT><A NAME="499"></A> String filename
|
---|
517 | <FONT CLASS="LN">00</FONT><A NAME="500"></A> = (String) propertyFiles.elementAt(propertyFileIndex);
|
---|
518 | <FONT CLASS="LN">01</FONT><A NAME="501"></A> Properties props = <FONT CLASS="New">new</FONT> Properties();
|
---|
519 | <FONT CLASS="LN">02</FONT><A NAME="502"></A> FileInputStream fis = <FONT CLASS="Null">null</FONT>;
|
---|
520 | <FONT CLASS="LN">03</FONT><A NAME="503"></A> <FONT CLASS="Try">try</FONT> {
|
---|
521 | <FONT CLASS="LN">04</FONT><A NAME="504"></A> fis = <FONT CLASS="New">new</FONT> FileInputStream(filename);
|
---|
522 | <FONT CLASS="LN">05</FONT><A NAME="505"></A> props.load(fis);
|
---|
523 | <FONT CLASS="LN">06</FONT><A NAME="506"></A> } <FONT CLASS="Catch">catch</FONT> (IOException e) {
|
---|
524 | <FONT CLASS="LN">07</FONT><A NAME="507"></A> System.out.println(<FONT CLASS="StringLiteral">"Could not load property file "</FONT>
|
---|
525 | <FONT CLASS="LN">08</FONT><A NAME="508"></A> + filename + <FONT CLASS="StringLiteral">": "</FONT> + e.getMessage());
|
---|
526 | <FONT CLASS="LN">09</FONT><A NAME="509"></A> } <FONT CLASS="Finally">finally</FONT> {
|
---|
527 | <FONT CLASS="LN">10</FONT><A NAME="510"></A> <FONT CLASS="If">if</FONT> (fis != <FONT CLASS="Null">null</FONT>) {
|
---|
528 | <FONT CLASS="LN">11</FONT><A NAME="511"></A> <FONT CLASS="Try">try</FONT> {
|
---|
529 | <FONT CLASS="LN">12</FONT><A NAME="512"></A> fis.close();
|
---|
530 | <FONT CLASS="LN">13</FONT><A NAME="513"></A> } <FONT CLASS="Catch">catch</FONT> (IOException e) {
|
---|
531 | <FONT CLASS="LN">14</FONT><A NAME="514"></A> <FONT CLASS="SingleLineComment">// ignore
|
---|
532 | <FONT CLASS="LN">15</FONT><A NAME="515"></A></FONT> }
|
---|
533 | <FONT CLASS="LN">16</FONT><A NAME="516"></A> }
|
---|
534 | <FONT CLASS="LN">17</FONT><A NAME="517"></A> }
|
---|
535 | <FONT CLASS="LN">18</FONT><A NAME="518"></A>
|
---|
536 | <FONT CLASS="LN">19</FONT><A NAME="519"></A> <FONT CLASS="SingleLineComment">// ensure that -D properties take precedence
|
---|
537 | <FONT CLASS="LN">20</FONT><A NAME="520"></A></FONT> Enumeration propertyNames = props.propertyNames();
|
---|
538 | <FONT CLASS="LN">21</FONT><A NAME="521"></A> <FONT CLASS="While">while</FONT> (propertyNames.hasMoreElements()) {
|
---|
539 | <FONT CLASS="LN">22</FONT><A NAME="522"></A> String name = (String) propertyNames.nextElement();
|
---|
540 | <FONT CLASS="LN">23</FONT><A NAME="523"></A> <FONT CLASS="If">if</FONT> (definedProps.getProperty(name) == <FONT CLASS="Null">null</FONT>) {
|
---|
541 | <FONT CLASS="LN">24</FONT><A NAME="524"></A> definedProps.put(name, props.getProperty(name));
|
---|
542 | <FONT CLASS="LN">25</FONT><A NAME="525"></A> }
|
---|
543 | <FONT CLASS="LN">26</FONT><A NAME="526"></A> }
|
---|
544 | <FONT CLASS="LN">27</FONT><A NAME="527"></A> }
|
---|
545 | <FONT CLASS="LN">28</FONT><A NAME="528"></A>
|
---|
546 | <FONT CLASS="LN">29</FONT><A NAME="529"></A> <FONT CLASS="If">if</FONT> (msgOutputLevel >= Project.MSG_INFO) {
|
---|
547 | <FONT CLASS="LN">30</FONT><A NAME="530"></A> System.out.println(<FONT CLASS="StringLiteral">"Buildfile: "</FONT> + buildFile);
|
---|
548 | <FONT CLASS="LN">31</FONT><A NAME="531"></A> }
|
---|
549 | <FONT CLASS="LN">32</FONT><A NAME="532"></A>
|
---|
550 | <FONT CLASS="LN">33</FONT><A NAME="533"></A> <FONT CLASS="If">if</FONT> (logTo != <FONT CLASS="Null">null</FONT>) {
|
---|
551 | <FONT CLASS="LN">34</FONT><A NAME="534"></A> out = logTo;
|
---|
552 | <FONT CLASS="LN">35</FONT><A NAME="535"></A> err = logTo;
|
---|
553 | <FONT CLASS="LN">36</FONT><A NAME="536"></A> System.setOut(out);
|
---|
554 | <FONT CLASS="LN">37</FONT><A NAME="537"></A> System.setErr(err);
|
---|
555 | <FONT CLASS="LN">38</FONT><A NAME="538"></A> }
|
---|
556 | <FONT CLASS="LN">39</FONT><A NAME="539"></A> readyToRun = <FONT CLASS="True">true</FONT>;
|
---|
557 | <FONT CLASS="LN">40</FONT><A NAME="540"></A> }
|
---|
558 | <FONT CLASS="LN">41</FONT><A NAME="541"></A>
|
---|
559 | <FONT CLASS="LN">42</FONT><A NAME="542"></A> <FONT CLASS="FormalComment">/**
|
---|
560 | <FONT CLASS="LN">43</FONT><A NAME="543"></A> * Helper to get the parent file for a given file.
|
---|
561 | <FONT CLASS="LN">44</FONT><A NAME="544"></A> * <p>
|
---|
562 | <FONT CLASS="LN">45</FONT><A NAME="545"></A> * Added to simulate File.getParentFile() from JDK 1.2.
|
---|
563 | <FONT CLASS="LN">46</FONT><A NAME="546"></A> * @deprecated
|
---|
564 | <FONT CLASS="LN">47</FONT><A NAME="547"></A> *
|
---|
565 | <FONT CLASS="LN">48</FONT><A NAME="548"></A> * @param file File to find parent of. Must not be <code>null</code>.
|
---|
566 | <FONT CLASS="LN">49</FONT><A NAME="549"></A> * @return Parent file or null if none
|
---|
567 | <FONT CLASS="LN">50</FONT><A NAME="550"></A> */</FONT>
|
---|
568 | <FONT CLASS="LN">51</FONT><A NAME="551"></A> <FONT CLASS="Private">private</FONT> File getParentFile(File file) {
|
---|
569 | <FONT CLASS="LN">52</FONT><A NAME="552"></A> File parent = file.getParentFile();
|
---|
570 | <FONT CLASS="LN">53</FONT><A NAME="553"></A>
|
---|
571 | <FONT CLASS="LN">54</FONT><A NAME="554"></A> <FONT CLASS="If">if</FONT> (parent != <FONT CLASS="Null">null</FONT> && msgOutputLevel >= Project.MSG_VERBOSE) {
|
---|
572 | <FONT CLASS="LN">55</FONT><A NAME="555"></A> System.out.println(<FONT CLASS="StringLiteral">"Searching in "</FONT> + parent.getAbsolutePath());
|
---|
573 | <FONT CLASS="LN">56</FONT><A NAME="556"></A> }
|
---|
574 | <FONT CLASS="LN">57</FONT><A NAME="557"></A>
|
---|
575 | <FONT CLASS="LN">58</FONT><A NAME="558"></A> <FONT CLASS="Return">return</FONT> parent;
|
---|
576 | <FONT CLASS="LN">59</FONT><A NAME="559"></A> }
|
---|
577 | <FONT CLASS="LN">60</FONT><A NAME="560"></A>
|
---|
578 | <FONT CLASS="LN">61</FONT><A NAME="561"></A> <FONT CLASS="FormalComment">/**
|
---|
579 | <FONT CLASS="LN">62</FONT><A NAME="562"></A> * Search parent directories for the build file.
|
---|
580 | <FONT CLASS="LN">63</FONT><A NAME="563"></A> * <p>
|
---|
581 | <FONT CLASS="LN">64</FONT><A NAME="564"></A> * Takes the given target as a suffix to append to each
|
---|
582 | <FONT CLASS="LN">65</FONT><A NAME="565"></A> * parent directory in search of a build file. Once the
|
---|
583 | <FONT CLASS="LN">66</FONT><A NAME="566"></A> * root of the file-system has been reached an exception
|
---|
584 | <FONT CLASS="LN">67</FONT><A NAME="567"></A> * is thrown.
|
---|
585 | <FONT CLASS="LN">68</FONT><A NAME="568"></A> *
|
---|
586 | <FONT CLASS="LN">69</FONT><A NAME="569"></A> * @param start Leaf directory of search.
|
---|
587 | <FONT CLASS="LN">70</FONT><A NAME="570"></A> * Must not be <code>null</code>.
|
---|
588 | <FONT CLASS="LN">71</FONT><A NAME="571"></A> * @param suffix Suffix filename to look for in parents.
|
---|
589 | <FONT CLASS="LN">72</FONT><A NAME="572"></A> * Must not be <code>null</code>.
|
---|
590 | <FONT CLASS="LN">73</FONT><A NAME="573"></A> *
|
---|
591 | <FONT CLASS="LN">74</FONT><A NAME="574"></A> * @return A handle to the build file if one is found
|
---|
592 | <FONT CLASS="LN">75</FONT><A NAME="575"></A> *
|
---|
593 | <FONT CLASS="LN">76</FONT><A NAME="576"></A> * @exception BuildException if no build file is found
|
---|
594 | <FONT CLASS="LN">77</FONT><A NAME="577"></A> */</FONT>
|
---|
595 | <FONT CLASS="LN">78</FONT><A NAME="578"></A> <FONT CLASS="Private">private</FONT> File findBuildFile(String start, String suffix)
|
---|
596 | <FONT CLASS="LN">79</FONT><A NAME="579"></A> <FONT CLASS="Throws">throws</FONT> BuildException {
|
---|
597 | <FONT CLASS="LN">80</FONT><A NAME="580"></A> <FONT CLASS="If">if</FONT> (msgOutputLevel >= Project.MSG_INFO) {
|
---|
598 | <FONT CLASS="LN">81</FONT><A NAME="581"></A> System.out.println(<FONT CLASS="StringLiteral">"Searching for "</FONT> + suffix + <FONT CLASS="StringLiteral">" ..."</FONT>);
|
---|
599 | <FONT CLASS="LN">82</FONT><A NAME="582"></A> }
|
---|
600 | <FONT CLASS="LN">83</FONT><A NAME="583"></A>
|
---|
601 | <FONT CLASS="LN">84</FONT><A NAME="584"></A> File parent = <FONT CLASS="New">new</FONT> File(<FONT CLASS="New">new</FONT> File(start).getAbsolutePath());
|
---|
602 | <FONT CLASS="LN">85</FONT><A NAME="585"></A> File file = <FONT CLASS="New">new</FONT> File(parent, suffix);
|
---|
603 | <FONT CLASS="LN">86</FONT><A NAME="586"></A>
|
---|
604 | <FONT CLASS="LN">87</FONT><A NAME="587"></A> <FONT CLASS="SingleLineComment">// check if the target file exists in the current directory
|
---|
605 | <FONT CLASS="LN">88</FONT><A NAME="588"></A></FONT> <FONT CLASS="While">while</FONT> (!file.exists()) {
|
---|
606 | <FONT CLASS="LN">89</FONT><A NAME="589"></A> <FONT CLASS="SingleLineComment">// change to parent directory
|
---|
607 | <FONT CLASS="LN">90</FONT><A NAME="590"></A></FONT> parent = getParentFile(parent);
|
---|
608 | <FONT CLASS="LN">91</FONT><A NAME="591"></A>
|
---|
609 | <FONT CLASS="LN">92</FONT><A NAME="592"></A> <FONT CLASS="SingleLineComment">// if parent is null, then we are at the root of the fs,
|
---|
610 | <FONT CLASS="LN">93</FONT><A NAME="593"></A></FONT> <FONT CLASS="SingleLineComment">// complain that we can't find the build file.
|
---|
611 | <FONT CLASS="LN">94</FONT><A NAME="594"></A></FONT> <FONT CLASS="If">if</FONT> (parent == <FONT CLASS="Null">null</FONT>) {
|
---|
612 | <FONT CLASS="LN">95</FONT><A NAME="595"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"Could not locate a build file!"</FONT>);
|
---|
613 | <FONT CLASS="LN">96</FONT><A NAME="596"></A> }
|
---|
614 | <FONT CLASS="LN">97</FONT><A NAME="597"></A>
|
---|
615 | <FONT CLASS="LN">98</FONT><A NAME="598"></A> <FONT CLASS="SingleLineComment">// refresh our file handle
|
---|
616 | <FONT CLASS="LN">99</FONT><A NAME="599"></A></FONT> file = <FONT CLASS="New">new</FONT> File(parent, suffix);
|
---|
617 | <FONT CLASS="LN">00</FONT><A NAME="600"></A> }
|
---|
618 | <FONT CLASS="LN">01</FONT><A NAME="601"></A>
|
---|
619 | <FONT CLASS="LN">02</FONT><A NAME="602"></A> <FONT CLASS="Return">return</FONT> file;
|
---|
620 | <FONT CLASS="LN">03</FONT><A NAME="603"></A> }
|
---|
621 | <FONT CLASS="LN">04</FONT><A NAME="604"></A>
|
---|
622 | <FONT CLASS="LN">05</FONT><A NAME="605"></A> <FONT CLASS="FormalComment">/**
|
---|
623 | <FONT CLASS="LN">06</FONT><A NAME="606"></A> * Executes the build. If the constructor for this instance failed
|
---|
624 | <FONT CLASS="LN">07</FONT><A NAME="607"></A> * (e.g. returned after issuing a warning), this method returns
|
---|
625 | <FONT CLASS="LN">08</FONT><A NAME="608"></A> * immediately.
|
---|
626 | <FONT CLASS="LN">09</FONT><A NAME="609"></A> *
|
---|
627 | <FONT CLASS="LN">10</FONT><A NAME="610"></A> * @param coreLoader The classloader to use to find core classes.
|
---|
628 | <FONT CLASS="LN">11</FONT><A NAME="611"></A> * May be <code>null</code>, in which case the
|
---|
629 | <FONT CLASS="LN">12</FONT><A NAME="612"></A> * system classloader is used.
|
---|
630 | <FONT CLASS="LN">13</FONT><A NAME="613"></A> *
|
---|
631 | <FONT CLASS="LN">14</FONT><A NAME="614"></A> * @exception BuildException if the build fails
|
---|
632 | <FONT CLASS="LN">15</FONT><A NAME="615"></A> */</FONT>
|
---|
633 | <FONT CLASS="LN">16</FONT><A NAME="616"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Void">void</FONT> runBuild(ClassLoader coreLoader) <FONT CLASS="Throws">throws</FONT> BuildException {
|
---|
634 | <FONT CLASS="LN">17</FONT><A NAME="617"></A>
|
---|
635 | <FONT CLASS="LN">18</FONT><A NAME="618"></A> <FONT CLASS="If">if</FONT> (!readyToRun) {
|
---|
636 | <FONT CLASS="LN">19</FONT><A NAME="619"></A> <FONT CLASS="Return">return</FONT>;
|
---|
637 | <FONT CLASS="LN">20</FONT><A NAME="620"></A> }
|
---|
638 | <FONT CLASS="LN">21</FONT><A NAME="621"></A>
|
---|
639 | <FONT CLASS="LN">22</FONT><A NAME="622"></A> <FONT CLASS="Final">final</FONT> Project project = <FONT CLASS="New">new</FONT> Project();
|
---|
640 | <FONT CLASS="LN">23</FONT><A NAME="623"></A> project.setCoreLoader(coreLoader);
|
---|
641 | <FONT CLASS="LN">24</FONT><A NAME="624"></A>
|
---|
642 | <FONT CLASS="LN">25</FONT><A NAME="625"></A> Throwable error = <FONT CLASS="Null">null</FONT>;
|
---|
643 | <FONT CLASS="LN">26</FONT><A NAME="626"></A>
|
---|
644 | <FONT CLASS="LN">27</FONT><A NAME="627"></A> <FONT CLASS="Try">try</FONT> {
|
---|
645 | <FONT CLASS="LN">28</FONT><A NAME="628"></A> addBuildListeners(project);
|
---|
646 | <FONT CLASS="LN">29</FONT><A NAME="629"></A> addInputHandler(project);
|
---|
647 | <FONT CLASS="LN">30</FONT><A NAME="630"></A>
|
---|
648 | <FONT CLASS="LN">31</FONT><A NAME="631"></A> PrintStream err = System.err;
|
---|
649 | <FONT CLASS="LN">32</FONT><A NAME="632"></A> PrintStream out = System.out;
|
---|
650 | <FONT CLASS="LN">33</FONT><A NAME="633"></A> InputStream in = System.in;
|
---|
651 | <FONT CLASS="LN">34</FONT><A NAME="634"></A>
|
---|
652 | <FONT CLASS="LN">35</FONT><A NAME="635"></A> <FONT CLASS="SingleLineComment">// use a system manager that prevents from System.exit()
|
---|
653 | <FONT CLASS="LN">36</FONT><A NAME="636"></A></FONT> <FONT CLASS="SingleLineComment">// only in JDK > 1.1
|
---|
654 | <FONT CLASS="LN">37</FONT><A NAME="637"></A></FONT> SecurityManager oldsm = <FONT CLASS="Null">null</FONT>;
|
---|
655 | <FONT CLASS="LN">38</FONT><A NAME="638"></A> <FONT CLASS="If">if</FONT> (!JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_0)
|
---|
656 | <FONT CLASS="LN">39</FONT><A NAME="639"></A> && !JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_1)) {
|
---|
657 | <FONT CLASS="LN">40</FONT><A NAME="640"></A> oldsm = System.getSecurityManager();
|
---|
658 | <FONT CLASS="LN">41</FONT><A NAME="641"></A>
|
---|
659 | <FONT CLASS="LN">42</FONT><A NAME="642"></A> <FONT CLASS="SingleLineComment">//SecurityManager can not be installed here for backwards
|
---|
660 | <FONT CLASS="LN">43</FONT><A NAME="643"></A></FONT> <FONT CLASS="SingleLineComment">//compatibility reasons (PD). Needs to be loaded prior to
|
---|
661 | <FONT CLASS="LN">44</FONT><A NAME="644"></A></FONT> <FONT CLASS="SingleLineComment">//ant class if we are going to implement it.
|
---|
662 | <FONT CLASS="LN">45</FONT><A NAME="645"></A></FONT> <FONT CLASS="SingleLineComment">//System.setSecurityManager(new NoExitSecurityManager());
|
---|
663 | <FONT CLASS="LN">46</FONT><A NAME="646"></A></FONT> }
|
---|
664 | <FONT CLASS="LN">47</FONT><A NAME="647"></A> <FONT CLASS="Try">try</FONT> {
|
---|
665 | <FONT CLASS="LN">48</FONT><A NAME="648"></A> <FONT CLASS="If">if</FONT> (allowInput) {
|
---|
666 | <FONT CLASS="LN">49</FONT><A NAME="649"></A> project.setDefaultInputStream(System.in);
|
---|
667 | <FONT CLASS="LN">50</FONT><A NAME="650"></A> }
|
---|
668 | <FONT CLASS="LN">51</FONT><A NAME="651"></A> <FONT CLASS="SingleLineComment">//System.setIn(new DemuxInputStream(project));
|
---|
669 | <FONT CLASS="LN">52</FONT><A NAME="652"></A></FONT> <FONT CLASS="SingleLineComment">//System.setOut(new PrintStream(new DemuxOutputStream(project, false)));
|
---|
670 | <FONT CLASS="LN">53</FONT><A NAME="653"></A></FONT> <FONT CLASS="SingleLineComment">//System.setErr(new PrintStream(new DemuxOutputStream(project, true)));
|
---|
671 | <FONT CLASS="LN">54</FONT><A NAME="654"></A></FONT>
|
---|
672 | <FONT CLASS="LN">55</FONT><A NAME="655"></A>
|
---|
673 | <FONT CLASS="LN">56</FONT><A NAME="656"></A> <FONT CLASS="If">if</FONT> (!projectHelp) {
|
---|
674 | <FONT CLASS="LN">57</FONT><A NAME="657"></A> project.fireBuildStarted();
|
---|
675 | <FONT CLASS="LN">58</FONT><A NAME="658"></A> }
|
---|
676 | <FONT CLASS="LN">59</FONT><A NAME="659"></A>
|
---|
677 | <FONT CLASS="LN">60</FONT><A NAME="660"></A> <FONT CLASS="SingleLineComment">// set the thread priorities
|
---|
678 | <FONT CLASS="LN">61</FONT><A NAME="661"></A></FONT> <FONT CLASS="If">if</FONT> (threadPriority != <FONT CLASS="Null">null</FONT>) {
|
---|
679 | <FONT CLASS="LN">62</FONT><A NAME="662"></A> <FONT CLASS="Try">try</FONT> {
|
---|
680 | <FONT CLASS="LN">63</FONT><A NAME="663"></A> project.log(<FONT CLASS="StringLiteral">"Setting Ant's thread priority to "</FONT>
|
---|
681 | <FONT CLASS="LN">64</FONT><A NAME="664"></A> + threadPriority,Project.MSG_VERBOSE);
|
---|
682 | <FONT CLASS="LN">65</FONT><A NAME="665"></A> Thread.currentThread().setPriority(threadPriority.intValue());
|
---|
683 | <FONT CLASS="LN">66</FONT><A NAME="666"></A> } <FONT CLASS="Catch">catch</FONT> (SecurityException swallowed) {
|
---|
684 | <FONT CLASS="LN">67</FONT><A NAME="667"></A> <FONT CLASS="SingleLineComment">//we cannot set the priority here.
|
---|
685 | <FONT CLASS="LN">68</FONT><A NAME="668"></A></FONT> project.log(<FONT CLASS="StringLiteral">"A security manager refused to set the -nice value"</FONT>);
|
---|
686 | <FONT CLASS="LN">69</FONT><A NAME="669"></A> }
|
---|
687 | <FONT CLASS="LN">70</FONT><A NAME="670"></A> }
|
---|
688 | <FONT CLASS="LN">71</FONT><A NAME="671"></A>
|
---|
689 | <FONT CLASS="LN">72</FONT><A NAME="672"></A> project.init();
|
---|
690 | <FONT CLASS="LN">73</FONT><A NAME="673"></A> project.setUserProperty(<FONT CLASS="StringLiteral">"ant.version"</FONT>, getAntVersion());
|
---|
691 | <FONT CLASS="LN">74</FONT><A NAME="674"></A>
|
---|
692 | <FONT CLASS="LN">75</FONT><A NAME="675"></A> <FONT CLASS="SingleLineComment">// set user-define properties
|
---|
693 | <FONT CLASS="LN">76</FONT><A NAME="676"></A></FONT> Enumeration e = definedProps.keys();
|
---|
694 | <FONT CLASS="LN">77</FONT><A NAME="677"></A> <FONT CLASS="While">while</FONT> (e.hasMoreElements()) {
|
---|
695 | <FONT CLASS="LN">78</FONT><A NAME="678"></A> String arg = (String) e.nextElement();
|
---|
696 | <FONT CLASS="LN">79</FONT><A NAME="679"></A> String value = (String) definedProps.get(arg);
|
---|
697 | <FONT CLASS="LN">80</FONT><A NAME="680"></A> project.setUserProperty(arg, value);
|
---|
698 | <FONT CLASS="LN">81</FONT><A NAME="681"></A> }
|
---|
699 | <FONT CLASS="LN">82</FONT><A NAME="682"></A>
|
---|
700 | <FONT CLASS="LN">83</FONT><A NAME="683"></A> project.setUserProperty(<FONT CLASS="StringLiteral">"ant.file"</FONT>,
|
---|
701 | <FONT CLASS="LN">84</FONT><A NAME="684"></A> buildFile.getAbsolutePath());
|
---|
702 | <FONT CLASS="LN">85</FONT><A NAME="685"></A> project.setKeepGoingMode(keepGoingMode);
|
---|
703 | <FONT CLASS="LN">86</FONT><A NAME="686"></A>
|
---|
704 | <FONT CLASS="LN">87</FONT><A NAME="687"></A> ProjectHelper.configureProject(project, buildFile);
|
---|
705 | <FONT CLASS="LN">88</FONT><A NAME="688"></A>
|
---|
706 | <FONT CLASS="LN">89</FONT><A NAME="689"></A> project.setBasedir(definedProps.getProperty(PropertiesFileRenderer.FILE_ROOT_PROPERTY));
|
---|
707 | <FONT CLASS="LN">90</FONT><A NAME="690"></A>
|
---|
708 | <FONT CLASS="LN">91</FONT><A NAME="691"></A>
|
---|
709 | <FONT CLASS="LN">92</FONT><A NAME="692"></A> <FONT CLASS="If">if</FONT> (projectHelp) {
|
---|
710 | <FONT CLASS="LN">93</FONT><A NAME="693"></A> printDescription(project);
|
---|
711 | <FONT CLASS="LN">94</FONT><A NAME="694"></A> printTargets(project, msgOutputLevel > Project.MSG_INFO);
|
---|
712 | <FONT CLASS="LN">95</FONT><A NAME="695"></A> <FONT CLASS="Return">return</FONT>;
|
---|
713 | <FONT CLASS="LN">96</FONT><A NAME="696"></A> }
|
---|
714 | <FONT CLASS="LN">97</FONT><A NAME="697"></A>
|
---|
715 | <FONT CLASS="LN">98</FONT><A NAME="698"></A> <FONT CLASS="SingleLineComment">// make sure that we have a target to execute
|
---|
716 | <FONT CLASS="LN">99</FONT><A NAME="699"></A></FONT> <FONT CLASS="If">if</FONT> (targets.size() == <FONT CLASS="IntegerLiteral">0</FONT>) {
|
---|
717 | <FONT CLASS="LN">00</FONT><A NAME="700"></A> <FONT CLASS="If">if</FONT> (project.getDefaultTarget() != <FONT CLASS="Null">null</FONT>) {
|
---|
718 | <FONT CLASS="LN">01</FONT><A NAME="701"></A> targets.addElement(project.getDefaultTarget());
|
---|
719 | <FONT CLASS="LN">02</FONT><A NAME="702"></A> }
|
---|
720 | <FONT CLASS="LN">03</FONT><A NAME="703"></A> }
|
---|
721 | <FONT CLASS="LN">04</FONT><A NAME="704"></A> project.executeTargets(targets);
|
---|
722 | <FONT CLASS="LN">05</FONT><A NAME="705"></A> } <FONT CLASS="Finally">finally</FONT> {
|
---|
723 | <FONT CLASS="LN">06</FONT><A NAME="706"></A> <FONT CLASS="SingleLineComment">// put back the original security manager
|
---|
724 | <FONT CLASS="LN">07</FONT><A NAME="707"></A></FONT> <FONT CLASS="SingleLineComment">//The following will never eval to true. (PD)
|
---|
725 | <FONT CLASS="LN">08</FONT><A NAME="708"></A></FONT> <FONT CLASS="If">if</FONT> (oldsm != <FONT CLASS="Null">null</FONT>) {
|
---|
726 | <FONT CLASS="LN">09</FONT><A NAME="709"></A> System.setSecurityManager(oldsm);
|
---|
727 | <FONT CLASS="LN">10</FONT><A NAME="710"></A> }
|
---|
728 | <FONT CLASS="LN">11</FONT><A NAME="711"></A>
|
---|
729 | <FONT CLASS="LN">12</FONT><A NAME="712"></A> System.setOut(out);
|
---|
730 | <FONT CLASS="LN">13</FONT><A NAME="713"></A> System.setErr(err);
|
---|
731 | <FONT CLASS="LN">14</FONT><A NAME="714"></A> System.setIn(in);
|
---|
732 | <FONT CLASS="LN">15</FONT><A NAME="715"></A> }
|
---|
733 | <FONT CLASS="LN">16</FONT><A NAME="716"></A> } <FONT CLASS="Catch">catch</FONT> (RuntimeException exc) {
|
---|
734 | <FONT CLASS="LN">17</FONT><A NAME="717"></A> error = exc;
|
---|
735 | <FONT CLASS="LN">18</FONT><A NAME="718"></A> <FONT CLASS="Throw">throw</FONT> exc;
|
---|
736 | <FONT CLASS="LN">19</FONT><A NAME="719"></A> } <FONT CLASS="Catch">catch</FONT> (Error err) {
|
---|
737 | <FONT CLASS="LN">20</FONT><A NAME="720"></A> error = err;
|
---|
738 | <FONT CLASS="LN">21</FONT><A NAME="721"></A> <FONT CLASS="Throw">throw</FONT> err;
|
---|
739 | <FONT CLASS="LN">22</FONT><A NAME="722"></A> } <FONT CLASS="Finally">finally</FONT> {
|
---|
740 | <FONT CLASS="LN">23</FONT><A NAME="723"></A> <FONT CLASS="If">if</FONT> (!projectHelp) {
|
---|
741 | <FONT CLASS="LN">24</FONT><A NAME="724"></A> project.fireBuildFinished(error);
|
---|
742 | <FONT CLASS="LN">25</FONT><A NAME="725"></A> } <FONT CLASS="Else">else</FONT> <FONT CLASS="If">if</FONT> (error != <FONT CLASS="Null">null</FONT>) {
|
---|
743 | <FONT CLASS="LN">26</FONT><A NAME="726"></A> project.log(error.toString(), Project.MSG_ERR);
|
---|
744 | <FONT CLASS="LN">27</FONT><A NAME="727"></A> }
|
---|
745 | <FONT CLASS="LN">28</FONT><A NAME="728"></A> }
|
---|
746 | <FONT CLASS="LN">29</FONT><A NAME="729"></A> }
|
---|
747 | <FONT CLASS="LN">30</FONT><A NAME="730"></A>
|
---|
748 | <FONT CLASS="LN">31</FONT><A NAME="731"></A> <FONT CLASS="FormalComment">/**
|
---|
749 | <FONT CLASS="LN">32</FONT><A NAME="732"></A> * Adds the listeners specified in the command line arguments,
|
---|
750 | <FONT CLASS="LN">33</FONT><A NAME="733"></A> * along with the default listener, to the specified project.
|
---|
751 | <FONT CLASS="LN">34</FONT><A NAME="734"></A> *
|
---|
752 | <FONT CLASS="LN">35</FONT><A NAME="735"></A> * @param project The project to add listeners to.
|
---|
753 | <FONT CLASS="LN">36</FONT><A NAME="736"></A> * Must not be <code>null</code>.
|
---|
754 | <FONT CLASS="LN">37</FONT><A NAME="737"></A> */</FONT>
|
---|
755 | <FONT CLASS="LN">38</FONT><A NAME="738"></A> <FONT CLASS="Protected">protected</FONT> <FONT CLASS="Void">void</FONT> addBuildListeners(Project project) {
|
---|
756 | <FONT CLASS="LN">39</FONT><A NAME="739"></A>
|
---|
757 | <FONT CLASS="LN">40</FONT><A NAME="740"></A> <FONT CLASS="SingleLineComment">// Add the default listener
|
---|
758 | <FONT CLASS="LN">41</FONT><A NAME="741"></A></FONT> project.addBuildListener(createLogger());
|
---|
759 | <FONT CLASS="LN">42</FONT><A NAME="742"></A>
|
---|
760 | <FONT CLASS="LN">43</FONT><A NAME="743"></A> <FONT CLASS="SingleLineComment">//Add the AntInstaller Listener
|
---|
761 | <FONT CLASS="LN">44</FONT><A NAME="744"></A></FONT> <FONT CLASS="If">if</FONT>(ctx.getBuildListener()!=<FONT CLASS="Null">null</FONT>){
|
---|
762 | <FONT CLASS="LN">45</FONT><A NAME="745"></A> project.addBuildListener(ctx.getBuildListener());
|
---|
763 | <FONT CLASS="LN">46</FONT><A NAME="746"></A> }
|
---|
764 | <FONT CLASS="LN">47</FONT><A NAME="747"></A>
|
---|
765 | <FONT CLASS="LN">48</FONT><A NAME="748"></A> <FONT CLASS="For">for</FONT> (<FONT CLASS="Int">int</FONT> i = <FONT CLASS="IntegerLiteral">0</FONT>; i < listeners.size(); i++) {
|
---|
766 | <FONT CLASS="LN">49</FONT><A NAME="749"></A> String className = (String) listeners.elementAt(i);
|
---|
767 | <FONT CLASS="LN">50</FONT><A NAME="750"></A> <FONT CLASS="Try">try</FONT> {
|
---|
768 | <FONT CLASS="LN">51</FONT><A NAME="751"></A> BuildListener listener =
|
---|
769 | <FONT CLASS="LN">52</FONT><A NAME="752"></A> (BuildListener) Class.forName(className).newInstance();
|
---|
770 | <FONT CLASS="LN">53</FONT><A NAME="753"></A> <FONT CLASS="If">if</FONT> (project != <FONT CLASS="Null">null</FONT>) {
|
---|
771 | <FONT CLASS="LN">54</FONT><A NAME="754"></A> project.setProjectReference(listener);
|
---|
772 | <FONT CLASS="LN">55</FONT><A NAME="755"></A> }
|
---|
773 | <FONT CLASS="LN">56</FONT><A NAME="756"></A> project.addBuildListener(listener);
|
---|
774 | <FONT CLASS="LN">57</FONT><A NAME="757"></A> } <FONT CLASS="Catch">catch</FONT> (Throwable exc) {
|
---|
775 | <FONT CLASS="LN">58</FONT><A NAME="758"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"Unable to instantiate listener "</FONT>
|
---|
776 | <FONT CLASS="LN">59</FONT><A NAME="759"></A> + className, exc);
|
---|
777 | <FONT CLASS="LN">60</FONT><A NAME="760"></A> }
|
---|
778 | <FONT CLASS="LN">61</FONT><A NAME="761"></A> }
|
---|
779 | <FONT CLASS="LN">62</FONT><A NAME="762"></A> }
|
---|
780 | <FONT CLASS="LN">63</FONT><A NAME="763"></A>
|
---|
781 | <FONT CLASS="LN">64</FONT><A NAME="764"></A> <FONT CLASS="FormalComment">/**
|
---|
782 | <FONT CLASS="LN">65</FONT><A NAME="765"></A> * Creates the InputHandler and adds it to the project.
|
---|
783 | <FONT CLASS="LN">66</FONT><A NAME="766"></A> *
|
---|
784 | <FONT CLASS="LN">67</FONT><A NAME="767"></A> * @param project the project instance.
|
---|
785 | <FONT CLASS="LN">68</FONT><A NAME="768"></A> *
|
---|
786 | <FONT CLASS="LN">69</FONT><A NAME="769"></A> * @exception BuildException if a specified InputHandler
|
---|
787 | <FONT CLASS="LN">70</FONT><A NAME="770"></A> * implementation could not be loaded.
|
---|
788 | <FONT CLASS="LN">71</FONT><A NAME="771"></A> */</FONT>
|
---|
789 | <FONT CLASS="LN">72</FONT><A NAME="772"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Void">void</FONT> addInputHandler(Project project) <FONT CLASS="Throws">throws</FONT> BuildException {
|
---|
790 | <FONT CLASS="LN">73</FONT><A NAME="773"></A> InputHandler handler = <FONT CLASS="Null">null</FONT>;
|
---|
791 | <FONT CLASS="LN">74</FONT><A NAME="774"></A> <FONT CLASS="If">if</FONT> (inputHandlerClassname == <FONT CLASS="Null">null</FONT>) {
|
---|
792 | <FONT CLASS="LN">75</FONT><A NAME="775"></A> handler = <FONT CLASS="New">new</FONT> DefaultInputHandler();
|
---|
793 | <FONT CLASS="LN">76</FONT><A NAME="776"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
794 | <FONT CLASS="LN">77</FONT><A NAME="777"></A> <FONT CLASS="Try">try</FONT> {
|
---|
795 | <FONT CLASS="LN">78</FONT><A NAME="778"></A> handler = (InputHandler)
|
---|
796 | <FONT CLASS="LN">79</FONT><A NAME="779"></A> (Class.forName(inputHandlerClassname).newInstance());
|
---|
797 | <FONT CLASS="LN">80</FONT><A NAME="780"></A> <FONT CLASS="If">if</FONT> (project != <FONT CLASS="Null">null</FONT>) {
|
---|
798 | <FONT CLASS="LN">81</FONT><A NAME="781"></A> project.setProjectReference(handler);
|
---|
799 | <FONT CLASS="LN">82</FONT><A NAME="782"></A> }
|
---|
800 | <FONT CLASS="LN">83</FONT><A NAME="783"></A> } <FONT CLASS="Catch">catch</FONT> (ClassCastException e) {
|
---|
801 | <FONT CLASS="LN">84</FONT><A NAME="784"></A> String msg = <FONT CLASS="StringLiteral">"The specified input handler class "</FONT>
|
---|
802 | <FONT CLASS="LN">85</FONT><A NAME="785"></A> + inputHandlerClassname
|
---|
803 | <FONT CLASS="LN">86</FONT><A NAME="786"></A> + <FONT CLASS="StringLiteral">" does not implement the InputHandler interface"</FONT>;
|
---|
804 | <FONT CLASS="LN">87</FONT><A NAME="787"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(msg);
|
---|
805 | <FONT CLASS="LN">88</FONT><A NAME="788"></A> } <FONT CLASS="Catch">catch</FONT> (Exception e) {
|
---|
806 | <FONT CLASS="LN">89</FONT><A NAME="789"></A> String msg = <FONT CLASS="StringLiteral">"Unable to instantiate specified input handler "</FONT>
|
---|
807 | <FONT CLASS="LN">90</FONT><A NAME="790"></A> + <FONT CLASS="StringLiteral">"class "</FONT> + inputHandlerClassname + <FONT CLASS="StringLiteral">" : "</FONT>
|
---|
808 | <FONT CLASS="LN">91</FONT><A NAME="791"></A> + e.getClass().getName();
|
---|
809 | <FONT CLASS="LN">92</FONT><A NAME="792"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(msg);
|
---|
810 | <FONT CLASS="LN">93</FONT><A NAME="793"></A> }
|
---|
811 | <FONT CLASS="LN">94</FONT><A NAME="794"></A> }
|
---|
812 | <FONT CLASS="LN">95</FONT><A NAME="795"></A> project.setInputHandler(handler);
|
---|
813 | <FONT CLASS="LN">96</FONT><A NAME="796"></A> }
|
---|
814 | <FONT CLASS="LN">97</FONT><A NAME="797"></A>
|
---|
815 | <FONT CLASS="LN">98</FONT><A NAME="798"></A> <FONT CLASS="SingleLineComment">// XXX: (Jon Skeet) Any reason for writing a message and then using a bare
|
---|
816 | <FONT CLASS="LN">99</FONT><A NAME="799"></A></FONT> <FONT CLASS="SingleLineComment">// RuntimeException rather than just using a BuildException here? Is it
|
---|
817 | <FONT CLASS="LN">00</FONT><A NAME="800"></A></FONT> <FONT CLASS="SingleLineComment">// in case the message could end up being written to no loggers (as the
|
---|
818 | <FONT CLASS="LN">01</FONT><A NAME="801"></A></FONT> <FONT CLASS="SingleLineComment">// loggers could have failed to be created due to this failure)?
|
---|
819 | <FONT CLASS="LN">02</FONT><A NAME="802"></A></FONT> <FONT CLASS="FormalComment">/**
|
---|
820 | <FONT CLASS="LN">03</FONT><A NAME="803"></A> * Creates the default build logger for sending build events to the ant
|
---|
821 | <FONT CLASS="LN">04</FONT><A NAME="804"></A> * log.
|
---|
822 | <FONT CLASS="LN">05</FONT><A NAME="805"></A> *
|
---|
823 | <FONT CLASS="LN">06</FONT><A NAME="806"></A> * @return the logger instance for this build.
|
---|
824 | <FONT CLASS="LN">07</FONT><A NAME="807"></A> */</FONT>
|
---|
825 | <FONT CLASS="LN">08</FONT><A NAME="808"></A> <FONT CLASS="Private">private</FONT> BuildLogger createLogger() {
|
---|
826 | <FONT CLASS="LN">09</FONT><A NAME="809"></A> BuildLogger logger = <FONT CLASS="Null">null</FONT>;
|
---|
827 | <FONT CLASS="LN">10</FONT><A NAME="810"></A> <FONT CLASS="If">if</FONT> (loggerClassname != <FONT CLASS="Null">null</FONT>) {
|
---|
828 | <FONT CLASS="LN">11</FONT><A NAME="811"></A> <FONT CLASS="Try">try</FONT> {
|
---|
829 | <FONT CLASS="LN">12</FONT><A NAME="812"></A> Class loggerClass = Class.forName(loggerClassname);
|
---|
830 | <FONT CLASS="LN">13</FONT><A NAME="813"></A> logger = (BuildLogger) (loggerClass.newInstance());
|
---|
831 | <FONT CLASS="LN">14</FONT><A NAME="814"></A> } <FONT CLASS="Catch">catch</FONT> (ClassCastException e) {
|
---|
832 | <FONT CLASS="LN">15</FONT><A NAME="815"></A> System.err.println(<FONT CLASS="StringLiteral">"The specified logger class "</FONT>
|
---|
833 | <FONT CLASS="LN">16</FONT><A NAME="816"></A> + loggerClassname
|
---|
834 | <FONT CLASS="LN">17</FONT><A NAME="817"></A> + <FONT CLASS="StringLiteral">" does not implement the BuildLogger interface"</FONT>);
|
---|
835 | <FONT CLASS="LN">18</FONT><A NAME="818"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> RuntimeException();
|
---|
836 | <FONT CLASS="LN">19</FONT><A NAME="819"></A> } <FONT CLASS="Catch">catch</FONT> (Exception e) {
|
---|
837 | <FONT CLASS="LN">20</FONT><A NAME="820"></A> System.err.println(<FONT CLASS="StringLiteral">"Unable to instantiate specified logger "</FONT>
|
---|
838 | <FONT CLASS="LN">21</FONT><A NAME="821"></A> + <FONT CLASS="StringLiteral">"class "</FONT> + loggerClassname + <FONT CLASS="StringLiteral">" : "</FONT>
|
---|
839 | <FONT CLASS="LN">22</FONT><A NAME="822"></A> + e.getClass().getName());
|
---|
840 | <FONT CLASS="LN">23</FONT><A NAME="823"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> RuntimeException();
|
---|
841 | <FONT CLASS="LN">24</FONT><A NAME="824"></A> }
|
---|
842 | <FONT CLASS="LN">25</FONT><A NAME="825"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
843 | <FONT CLASS="LN">26</FONT><A NAME="826"></A> logger = <FONT CLASS="New">new</FONT> DefaultLogger();
|
---|
844 | <FONT CLASS="LN">27</FONT><A NAME="827"></A> }
|
---|
845 | <FONT CLASS="LN">28</FONT><A NAME="828"></A>
|
---|
846 | <FONT CLASS="LN">29</FONT><A NAME="829"></A> logger.setMessageOutputLevel(msgOutputLevel);
|
---|
847 | <FONT CLASS="LN">30</FONT><A NAME="830"></A> logger.setOutputPrintStream(out);
|
---|
848 | <FONT CLASS="LN">31</FONT><A NAME="831"></A> logger.setErrorPrintStream(err);
|
---|
849 | <FONT CLASS="LN">32</FONT><A NAME="832"></A> logger.setEmacsMode(emacsMode);
|
---|
850 | <FONT CLASS="LN">33</FONT><A NAME="833"></A>
|
---|
851 | <FONT CLASS="LN">34</FONT><A NAME="834"></A> <FONT CLASS="Return">return</FONT> logger;
|
---|
852 | <FONT CLASS="LN">35</FONT><A NAME="835"></A> }
|
---|
853 | <FONT CLASS="LN">36</FONT><A NAME="836"></A>
|
---|
854 | <FONT CLASS="LN">37</FONT><A NAME="837"></A> <FONT CLASS="FormalComment">/**
|
---|
855 | <FONT CLASS="LN">38</FONT><A NAME="838"></A> * Prints the usage information for this class to <code>System.out</code>.
|
---|
856 | <FONT CLASS="LN">39</FONT><A NAME="839"></A> */</FONT>
|
---|
857 | <FONT CLASS="LN">40</FONT><A NAME="840"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Void">void</FONT> printUsage() {
|
---|
858 | <FONT CLASS="LN">41</FONT><A NAME="841"></A> String lSep = System.getProperty(<FONT CLASS="StringLiteral">"line.separator"</FONT>);
|
---|
859 | <FONT CLASS="LN">42</FONT><A NAME="842"></A> StringBuffer msg = <FONT CLASS="New">new</FONT> StringBuffer();
|
---|
860 | <FONT CLASS="LN">43</FONT><A NAME="843"></A> msg.append(<FONT CLASS="StringLiteral">"ant [options] [target [target2 [target3] ...]]"</FONT> + lSep);
|
---|
861 | <FONT CLASS="LN">44</FONT><A NAME="844"></A> msg.append(<FONT CLASS="StringLiteral">"Options: "</FONT> + lSep);
|
---|
862 | <FONT CLASS="LN">45</FONT><A NAME="845"></A> msg.append(<FONT CLASS="StringLiteral">" -help, -h print this message"</FONT> + lSep);
|
---|
863 | <FONT CLASS="LN">46</FONT><A NAME="846"></A> msg.append(<FONT CLASS="StringLiteral">" -projecthelp, -p print project help information"</FONT> + lSep);
|
---|
864 | <FONT CLASS="LN">47</FONT><A NAME="847"></A> msg.append(<FONT CLASS="StringLiteral">" -version print the version information and exit"</FONT> + lSep);
|
---|
865 | <FONT CLASS="LN">48</FONT><A NAME="848"></A> msg.append(<FONT CLASS="StringLiteral">" -diagnostics print information that might be helpful to"</FONT> + lSep);
|
---|
866 | <FONT CLASS="LN">49</FONT><A NAME="849"></A> msg.append(<FONT CLASS="StringLiteral">" diagnose or report problems."</FONT> + lSep);
|
---|
867 | <FONT CLASS="LN">50</FONT><A NAME="850"></A> msg.append(<FONT CLASS="StringLiteral">" -quiet, -q be extra quiet"</FONT> + lSep);
|
---|
868 | <FONT CLASS="LN">51</FONT><A NAME="851"></A> msg.append(<FONT CLASS="StringLiteral">" -verbose, -v be extra verbose"</FONT> + lSep);
|
---|
869 | <FONT CLASS="LN">52</FONT><A NAME="852"></A> msg.append(<FONT CLASS="StringLiteral">" -debug, -d print debugging information"</FONT> + lSep);
|
---|
870 | <FONT CLASS="LN">53</FONT><A NAME="853"></A> msg.append(<FONT CLASS="StringLiteral">" -emacs, -e produce logging information without adornments"</FONT> + lSep);
|
---|
871 | <FONT CLASS="LN">54</FONT><A NAME="854"></A> msg.append(<FONT CLASS="StringLiteral">" -lib <path> specifies a path to search for jars and classes"</FONT> + lSep);
|
---|
872 | <FONT CLASS="LN">55</FONT><A NAME="855"></A> msg.append(<FONT CLASS="StringLiteral">" -logfile <file> use given file for log"</FONT> + lSep);
|
---|
873 | <FONT CLASS="LN">56</FONT><A NAME="856"></A> msg.append(<FONT CLASS="StringLiteral">" -l <file> ''"</FONT> + lSep);
|
---|
874 | <FONT CLASS="LN">57</FONT><A NAME="857"></A> msg.append(<FONT CLASS="StringLiteral">" -logger <classname> the class which is to perform logging"</FONT> + lSep);
|
---|
875 | <FONT CLASS="LN">58</FONT><A NAME="858"></A> msg.append(<FONT CLASS="StringLiteral">" -listener <classname> add an instance of class as a project listener"</FONT> + lSep);
|
---|
876 | <FONT CLASS="LN">59</FONT><A NAME="859"></A> msg.append(<FONT CLASS="StringLiteral">" -noinput do not allow interactive input"</FONT> + lSep);
|
---|
877 | <FONT CLASS="LN">60</FONT><A NAME="860"></A> msg.append(<FONT CLASS="StringLiteral">" -buildfile <file> use given buildfile"</FONT> + lSep);
|
---|
878 | <FONT CLASS="LN">61</FONT><A NAME="861"></A> msg.append(<FONT CLASS="StringLiteral">" -file <file> ''"</FONT> + lSep);
|
---|
879 | <FONT CLASS="LN">62</FONT><A NAME="862"></A> msg.append(<FONT CLASS="StringLiteral">" -f <file> ''"</FONT> + lSep);
|
---|
880 | <FONT CLASS="LN">63</FONT><A NAME="863"></A> msg.append(<FONT CLASS="StringLiteral">" -D<property>=<value> use value for given property"</FONT> + lSep);
|
---|
881 | <FONT CLASS="LN">64</FONT><A NAME="864"></A> msg.append(<FONT CLASS="StringLiteral">" -keep-going, -k execute all targets that do not depend"</FONT> + lSep);
|
---|
882 | <FONT CLASS="LN">65</FONT><A NAME="865"></A> msg.append(<FONT CLASS="StringLiteral">" on failed target(s)"</FONT> + lSep);
|
---|
883 | <FONT CLASS="LN">66</FONT><A NAME="866"></A> msg.append(<FONT CLASS="StringLiteral">" -propertyfile <name> load all properties from file with -D"</FONT> + lSep);
|
---|
884 | <FONT CLASS="LN">67</FONT><A NAME="867"></A> msg.append(<FONT CLASS="StringLiteral">" properties taking precedence"</FONT> + lSep);
|
---|
885 | <FONT CLASS="LN">68</FONT><A NAME="868"></A> msg.append(<FONT CLASS="StringLiteral">" -inputhandler <class> the class which will handle input requests"</FONT> + lSep);
|
---|
886 | <FONT CLASS="LN">69</FONT><A NAME="869"></A> msg.append(<FONT CLASS="StringLiteral">" -find <file> (s)earch for buildfile towards the root of"</FONT> + lSep);
|
---|
887 | <FONT CLASS="LN">70</FONT><A NAME="870"></A> msg.append(<FONT CLASS="StringLiteral">" -s <file> the filesystem and use it"</FONT> + lSep);
|
---|
888 | <FONT CLASS="LN">71</FONT><A NAME="871"></A> msg.append(<FONT CLASS="StringLiteral">" -nice number A niceness value for the main thread:"</FONT> + lSep +
|
---|
889 | <FONT CLASS="LN">72</FONT><A NAME="872"></A> <FONT CLASS="StringLiteral">" 1 (lowest) to 10 (highest); 5 is the default"</FONT> + lSep);
|
---|
890 | <FONT CLASS="LN">73</FONT><A NAME="873"></A> System.out.println(msg.toString());
|
---|
891 | <FONT CLASS="LN">74</FONT><A NAME="874"></A> }
|
---|
892 | <FONT CLASS="LN">75</FONT><A NAME="875"></A>
|
---|
893 | <FONT CLASS="LN">76</FONT><A NAME="876"></A> <FONT CLASS="FormalComment">/**
|
---|
894 | <FONT CLASS="LN">77</FONT><A NAME="877"></A> * Prints the Ant version information to <code>System.out</code>.
|
---|
895 | <FONT CLASS="LN">78</FONT><A NAME="878"></A> *
|
---|
896 | <FONT CLASS="LN">79</FONT><A NAME="879"></A> * @exception BuildException if the version information is unavailable
|
---|
897 | <FONT CLASS="LN">80</FONT><A NAME="880"></A> */</FONT>
|
---|
898 | <FONT CLASS="LN">81</FONT><A NAME="881"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Void">void</FONT> printVersion() <FONT CLASS="Throws">throws</FONT> BuildException {
|
---|
899 | <FONT CLASS="LN">82</FONT><A NAME="882"></A> System.out.println(getAntVersion());
|
---|
900 | <FONT CLASS="LN">83</FONT><A NAME="883"></A> }
|
---|
901 | <FONT CLASS="LN">84</FONT><A NAME="884"></A>
|
---|
902 | <FONT CLASS="LN">85</FONT><A NAME="885"></A> <FONT CLASS="FormalComment">/**
|
---|
903 | <FONT CLASS="LN">86</FONT><A NAME="886"></A> * Cache of the Ant version information when it has been loaded.
|
---|
904 | <FONT CLASS="LN">87</FONT><A NAME="887"></A> */</FONT>
|
---|
905 | <FONT CLASS="LN">88</FONT><A NAME="888"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> String antVersion = <FONT CLASS="Null">null</FONT>;
|
---|
906 | <FONT CLASS="LN">89</FONT><A NAME="889"></A>
|
---|
907 | <FONT CLASS="LN">90</FONT><A NAME="890"></A> <FONT CLASS="FormalComment">/**
|
---|
908 | <FONT CLASS="LN">91</FONT><A NAME="891"></A> * Returns the Ant version information, if available. Once the information
|
---|
909 | <FONT CLASS="LN">92</FONT><A NAME="892"></A> * has been loaded once, it's cached and returned from the cache on future
|
---|
910 | <FONT CLASS="LN">93</FONT><A NAME="893"></A> * calls.
|
---|
911 | <FONT CLASS="LN">94</FONT><A NAME="894"></A> *
|
---|
912 | <FONT CLASS="LN">95</FONT><A NAME="895"></A> * @return the Ant version information as a String
|
---|
913 | <FONT CLASS="LN">96</FONT><A NAME="896"></A> * (always non-<code>null</code>)
|
---|
914 | <FONT CLASS="LN">97</FONT><A NAME="897"></A> *
|
---|
915 | <FONT CLASS="LN">98</FONT><A NAME="898"></A> * @exception BuildException if the version information is unavailable
|
---|
916 | <FONT CLASS="LN">99</FONT><A NAME="899"></A> */</FONT>
|
---|
917 | <FONT CLASS="LN">00</FONT><A NAME="900"></A> <FONT CLASS="Public">public</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Synchronized">synchronized</FONT> String getAntVersion() <FONT CLASS="Throws">throws</FONT> BuildException {
|
---|
918 | <FONT CLASS="LN">01</FONT><A NAME="901"></A> <FONT CLASS="If">if</FONT> (antVersion == <FONT CLASS="Null">null</FONT>) {
|
---|
919 | <FONT CLASS="LN">02</FONT><A NAME="902"></A> <FONT CLASS="Try">try</FONT> {
|
---|
920 | <FONT CLASS="LN">03</FONT><A NAME="903"></A> Properties props = <FONT CLASS="New">new</FONT> Properties();
|
---|
921 | <FONT CLASS="LN">04</FONT><A NAME="904"></A> InputStream in =
|
---|
922 | <FONT CLASS="LN">05</FONT><A NAME="905"></A> <A HREF="../../../../org/tp23/antinstaller/antmod/Main.java.html">Main</A>.<FONT CLASS="Class">class</FONT>.getResourceAsStream(<FONT CLASS="StringLiteral">"/org/apache/tools/ant/version.txt"</FONT>);
|
---|
923 | <FONT CLASS="LN">06</FONT><A NAME="906"></A> props.load(in);
|
---|
924 | <FONT CLASS="LN">07</FONT><A NAME="907"></A> in.close();
|
---|
925 | <FONT CLASS="LN">08</FONT><A NAME="908"></A>
|
---|
926 | <FONT CLASS="LN">09</FONT><A NAME="909"></A> StringBuffer msg = <FONT CLASS="New">new</FONT> StringBuffer();
|
---|
927 | <FONT CLASS="LN">10</FONT><A NAME="910"></A> msg.append(<FONT CLASS="StringLiteral">"Apache Ant version "</FONT>);
|
---|
928 | <FONT CLASS="LN">11</FONT><A NAME="911"></A> msg.append(props.getProperty(<FONT CLASS="StringLiteral">"VERSION"</FONT>));
|
---|
929 | <FONT CLASS="LN">12</FONT><A NAME="912"></A> msg.append(<FONT CLASS="StringLiteral">" compiled on "</FONT>);
|
---|
930 | <FONT CLASS="LN">13</FONT><A NAME="913"></A> msg.append(props.getProperty(<FONT CLASS="StringLiteral">"DATE"</FONT>));
|
---|
931 | <FONT CLASS="LN">14</FONT><A NAME="914"></A> antVersion = msg.toString();
|
---|
932 | <FONT CLASS="LN">15</FONT><A NAME="915"></A> } <FONT CLASS="Catch">catch</FONT> (IOException ioe) {
|
---|
933 | <FONT CLASS="LN">16</FONT><A NAME="916"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"Could not load the version information:"</FONT>
|
---|
934 | <FONT CLASS="LN">17</FONT><A NAME="917"></A> + ioe.getMessage());
|
---|
935 | <FONT CLASS="LN">18</FONT><A NAME="918"></A> } <FONT CLASS="Catch">catch</FONT> (NullPointerException npe) {
|
---|
936 | <FONT CLASS="LN">19</FONT><A NAME="919"></A> <FONT CLASS="Throw">throw</FONT> <FONT CLASS="New">new</FONT> BuildException(<FONT CLASS="StringLiteral">"Could not load the version information."</FONT>);
|
---|
937 | <FONT CLASS="LN">20</FONT><A NAME="920"></A> }
|
---|
938 | <FONT CLASS="LN">21</FONT><A NAME="921"></A> }
|
---|
939 | <FONT CLASS="LN">22</FONT><A NAME="922"></A> <FONT CLASS="Return">return</FONT> antVersion;
|
---|
940 | <FONT CLASS="LN">23</FONT><A NAME="923"></A> }
|
---|
941 | <FONT CLASS="LN">24</FONT><A NAME="924"></A>
|
---|
942 | <FONT CLASS="LN">25</FONT><A NAME="925"></A> <FONT CLASS="FormalComment">/**
|
---|
943 | <FONT CLASS="LN">26</FONT><A NAME="926"></A> * Prints the description of a project (if there is one) to
|
---|
944 | <FONT CLASS="LN">27</FONT><A NAME="927"></A> * <code>System.out</code>.
|
---|
945 | <FONT CLASS="LN">28</FONT><A NAME="928"></A> *
|
---|
946 | <FONT CLASS="LN">29</FONT><A NAME="929"></A> * @param project The project to display a description of.
|
---|
947 | <FONT CLASS="LN">30</FONT><A NAME="930"></A> * Must not be <code>null</code>.
|
---|
948 | <FONT CLASS="LN">31</FONT><A NAME="931"></A> */</FONT>
|
---|
949 | <FONT CLASS="LN">32</FONT><A NAME="932"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Void">void</FONT> printDescription(Project project) {
|
---|
950 | <FONT CLASS="LN">33</FONT><A NAME="933"></A> <FONT CLASS="If">if</FONT> (project.getDescription() != <FONT CLASS="Null">null</FONT>) {
|
---|
951 | <FONT CLASS="LN">34</FONT><A NAME="934"></A> project.log(project.getDescription());
|
---|
952 | <FONT CLASS="LN">35</FONT><A NAME="935"></A> }
|
---|
953 | <FONT CLASS="LN">36</FONT><A NAME="936"></A> }
|
---|
954 | <FONT CLASS="LN">37</FONT><A NAME="937"></A>
|
---|
955 | <FONT CLASS="LN">38</FONT><A NAME="938"></A> <FONT CLASS="FormalComment">/**
|
---|
956 | <FONT CLASS="LN">39</FONT><A NAME="939"></A> * Prints a list of all targets in the specified project to
|
---|
957 | <FONT CLASS="LN">40</FONT><A NAME="940"></A> * <code>System.out</code>, optionally including subtargets.
|
---|
958 | <FONT CLASS="LN">41</FONT><A NAME="941"></A> *
|
---|
959 | <FONT CLASS="LN">42</FONT><A NAME="942"></A> * @param project The project to display a description of.
|
---|
960 | <FONT CLASS="LN">43</FONT><A NAME="943"></A> * Must not be <code>null</code>.
|
---|
961 | <FONT CLASS="LN">44</FONT><A NAME="944"></A> * @param printSubTargets Whether or not subtarget names should also be
|
---|
962 | <FONT CLASS="LN">45</FONT><A NAME="945"></A> * printed.
|
---|
963 | <FONT CLASS="LN">46</FONT><A NAME="946"></A> */</FONT>
|
---|
964 | <FONT CLASS="LN">47</FONT><A NAME="947"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Void">void</FONT> printTargets(Project project, <FONT CLASS="Boolean">boolean</FONT> printSubTargets) {
|
---|
965 | <FONT CLASS="LN">48</FONT><A NAME="948"></A> <FONT CLASS="SingleLineComment">// find the target with the longest name
|
---|
966 | <FONT CLASS="LN">49</FONT><A NAME="949"></A></FONT> <FONT CLASS="Int">int</FONT> maxLength = <FONT CLASS="IntegerLiteral">0</FONT>;
|
---|
967 | <FONT CLASS="LN">50</FONT><A NAME="950"></A> Enumeration ptargets = project.getTargets().elements();
|
---|
968 | <FONT CLASS="LN">51</FONT><A NAME="951"></A> String targetName;
|
---|
969 | <FONT CLASS="LN">52</FONT><A NAME="952"></A> String targetDescription;
|
---|
970 | <FONT CLASS="LN">53</FONT><A NAME="953"></A> Target currentTarget;
|
---|
971 | <FONT CLASS="LN">54</FONT><A NAME="954"></A> <FONT CLASS="SingleLineComment">// split the targets in top-level and sub-targets depending
|
---|
972 | <FONT CLASS="LN">55</FONT><A NAME="955"></A></FONT> <FONT CLASS="SingleLineComment">// on the presence of a description
|
---|
973 | <FONT CLASS="LN">56</FONT><A NAME="956"></A></FONT> Vector topNames = <FONT CLASS="New">new</FONT> Vector();
|
---|
974 | <FONT CLASS="LN">57</FONT><A NAME="957"></A> Vector topDescriptions = <FONT CLASS="New">new</FONT> Vector();
|
---|
975 | <FONT CLASS="LN">58</FONT><A NAME="958"></A> Vector subNames = <FONT CLASS="New">new</FONT> Vector();
|
---|
976 | <FONT CLASS="LN">59</FONT><A NAME="959"></A>
|
---|
977 | <FONT CLASS="LN">60</FONT><A NAME="960"></A> <FONT CLASS="While">while</FONT> (ptargets.hasMoreElements()) {
|
---|
978 | <FONT CLASS="LN">61</FONT><A NAME="961"></A> currentTarget = (Target) ptargets.nextElement();
|
---|
979 | <FONT CLASS="LN">62</FONT><A NAME="962"></A> targetName = currentTarget.getName();
|
---|
980 | <FONT CLASS="LN">63</FONT><A NAME="963"></A> <FONT CLASS="If">if</FONT> (targetName.equals(<FONT CLASS="StringLiteral">""</FONT>)) {
|
---|
981 | <FONT CLASS="LN">64</FONT><A NAME="964"></A> <FONT CLASS="Continue">continue</FONT>;
|
---|
982 | <FONT CLASS="LN">65</FONT><A NAME="965"></A> }
|
---|
983 | <FONT CLASS="LN">66</FONT><A NAME="966"></A> targetDescription = currentTarget.getDescription();
|
---|
984 | <FONT CLASS="LN">67</FONT><A NAME="967"></A> <FONT CLASS="SingleLineComment">// maintain a sorted list of targets
|
---|
985 | <FONT CLASS="LN">68</FONT><A NAME="968"></A></FONT> <FONT CLASS="If">if</FONT> (targetDescription == <FONT CLASS="Null">null</FONT>) {
|
---|
986 | <FONT CLASS="LN">69</FONT><A NAME="969"></A> <FONT CLASS="Int">int</FONT> pos = findTargetPosition(subNames, targetName);
|
---|
987 | <FONT CLASS="LN">70</FONT><A NAME="970"></A> subNames.insertElementAt(targetName, pos);
|
---|
988 | <FONT CLASS="LN">71</FONT><A NAME="971"></A> } <FONT CLASS="Else">else</FONT> {
|
---|
989 | <FONT CLASS="LN">72</FONT><A NAME="972"></A> <FONT CLASS="Int">int</FONT> pos = findTargetPosition(topNames, targetName);
|
---|
990 | <FONT CLASS="LN">73</FONT><A NAME="973"></A> topNames.insertElementAt(targetName, pos);
|
---|
991 | <FONT CLASS="LN">74</FONT><A NAME="974"></A> topDescriptions.insertElementAt(targetDescription, pos);
|
---|
992 | <FONT CLASS="LN">75</FONT><A NAME="975"></A> <FONT CLASS="If">if</FONT> (targetName.length() > maxLength) {
|
---|
993 | <FONT CLASS="LN">76</FONT><A NAME="976"></A> maxLength = targetName.length();
|
---|
994 | <FONT CLASS="LN">77</FONT><A NAME="977"></A> }
|
---|
995 | <FONT CLASS="LN">78</FONT><A NAME="978"></A> }
|
---|
996 | <FONT CLASS="LN">79</FONT><A NAME="979"></A> }
|
---|
997 | <FONT CLASS="LN">80</FONT><A NAME="980"></A>
|
---|
998 | <FONT CLASS="LN">81</FONT><A NAME="981"></A> printTargets(project, topNames, topDescriptions, <FONT CLASS="StringLiteral">"Main targets:"</FONT>,
|
---|
999 | <FONT CLASS="LN">82</FONT><A NAME="982"></A> maxLength);
|
---|
1000 | <FONT CLASS="LN">83</FONT><A NAME="983"></A> <FONT CLASS="SingleLineComment">//if there were no main targets, we list all subtargets
|
---|
1001 | <FONT CLASS="LN">84</FONT><A NAME="984"></A></FONT> <FONT CLASS="SingleLineComment">//as it means nothing has a description
|
---|
1002 | <FONT CLASS="LN">85</FONT><A NAME="985"></A></FONT> <FONT CLASS="If">if</FONT> (topNames.size() == <FONT CLASS="IntegerLiteral">0</FONT>) {
|
---|
1003 | <FONT CLASS="LN">86</FONT><A NAME="986"></A> printSubTargets = <FONT CLASS="True">true</FONT>;
|
---|
1004 | <FONT CLASS="LN">87</FONT><A NAME="987"></A> }
|
---|
1005 | <FONT CLASS="LN">88</FONT><A NAME="988"></A> <FONT CLASS="If">if</FONT> (printSubTargets) {
|
---|
1006 | <FONT CLASS="LN">89</FONT><A NAME="989"></A> printTargets(project, subNames, <FONT CLASS="Null">null</FONT>, <FONT CLASS="StringLiteral">"Other targets:"</FONT>, <FONT CLASS="IntegerLiteral">0</FONT>);
|
---|
1007 | <FONT CLASS="LN">90</FONT><A NAME="990"></A> }
|
---|
1008 | <FONT CLASS="LN">91</FONT><A NAME="991"></A>
|
---|
1009 | <FONT CLASS="LN">92</FONT><A NAME="992"></A> String defaultTarget = project.getDefaultTarget();
|
---|
1010 | <FONT CLASS="LN">93</FONT><A NAME="993"></A> <FONT CLASS="If">if</FONT> (defaultTarget != <FONT CLASS="Null">null</FONT> && !<FONT CLASS="StringLiteral">""</FONT>.equals(defaultTarget)) {
|
---|
1011 | <FONT CLASS="LN">94</FONT><A NAME="994"></A> <FONT CLASS="SingleLineComment">// shouldn't need to check but...
|
---|
1012 | <FONT CLASS="LN">95</FONT><A NAME="995"></A></FONT> project.log(<FONT CLASS="StringLiteral">"Default target: "</FONT> + defaultTarget);
|
---|
1013 | <FONT CLASS="LN">96</FONT><A NAME="996"></A> }
|
---|
1014 | <FONT CLASS="LN">97</FONT><A NAME="997"></A> }
|
---|
1015 | <FONT CLASS="LN">98</FONT><A NAME="998"></A>
|
---|
1016 | <FONT CLASS="LN">99</FONT><A NAME="999"></A> <FONT CLASS="FormalComment">/**
|
---|
1017 | <FONT CLASS="LN">00</FONT><A NAME="1000"></A> * Searches for the correct place to insert a name into a list so as
|
---|
1018 | <FONT CLASS="LN">01</FONT><A NAME="1001"></A> * to keep the list sorted alphabetically.
|
---|
1019 | <FONT CLASS="LN">02</FONT><A NAME="1002"></A> *
|
---|
1020 | <FONT CLASS="LN">03</FONT><A NAME="1003"></A> * @param names The current list of names. Must not be <code>null</code>.
|
---|
1021 | <FONT CLASS="LN">04</FONT><A NAME="1004"></A> * @param name The name to find a place for.
|
---|
1022 | <FONT CLASS="LN">05</FONT><A NAME="1005"></A> * Must not be <code>null</code>.
|
---|
1023 | <FONT CLASS="LN">06</FONT><A NAME="1006"></A> *
|
---|
1024 | <FONT CLASS="LN">07</FONT><A NAME="1007"></A> * @return the correct place in the list for the given name
|
---|
1025 | <FONT CLASS="LN">08</FONT><A NAME="1008"></A> */</FONT>
|
---|
1026 | <FONT CLASS="LN">09</FONT><A NAME="1009"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Int">int</FONT> findTargetPosition(Vector names, String name) {
|
---|
1027 | <FONT CLASS="LN">10</FONT><A NAME="1010"></A> <FONT CLASS="Int">int</FONT> res = names.size();
|
---|
1028 | <FONT CLASS="LN">11</FONT><A NAME="1011"></A> <FONT CLASS="For">for</FONT> (<FONT CLASS="Int">int</FONT> i = <FONT CLASS="IntegerLiteral">0</FONT>; i < names.size() && res == names.size(); i++) {
|
---|
1029 | <FONT CLASS="LN">12</FONT><A NAME="1012"></A> <FONT CLASS="If">if</FONT> (name.compareTo((String) names.elementAt(i)) < <FONT CLASS="IntegerLiteral">0</FONT>) {
|
---|
1030 | <FONT CLASS="LN">13</FONT><A NAME="1013"></A> res = i;
|
---|
1031 | <FONT CLASS="LN">14</FONT><A NAME="1014"></A> }
|
---|
1032 | <FONT CLASS="LN">15</FONT><A NAME="1015"></A> }
|
---|
1033 | <FONT CLASS="LN">16</FONT><A NAME="1016"></A> <FONT CLASS="Return">return</FONT> res;
|
---|
1034 | <FONT CLASS="LN">17</FONT><A NAME="1017"></A> }
|
---|
1035 | <FONT CLASS="LN">18</FONT><A NAME="1018"></A>
|
---|
1036 | <FONT CLASS="LN">19</FONT><A NAME="1019"></A> <FONT CLASS="FormalComment">/**
|
---|
1037 | <FONT CLASS="LN">20</FONT><A NAME="1020"></A> * Writes a formatted list of target names to <code>System.out</code>
|
---|
1038 | <FONT CLASS="LN">21</FONT><A NAME="1021"></A> * with an optional description.
|
---|
1039 | <FONT CLASS="LN">22</FONT><A NAME="1022"></A> *
|
---|
1040 | <FONT CLASS="LN">23</FONT><A NAME="1023"></A> *
|
---|
1041 | <FONT CLASS="LN">24</FONT><A NAME="1024"></A> * @param project the project instance.
|
---|
1042 | <FONT CLASS="LN">25</FONT><A NAME="1025"></A> * @param names The names to be printed.
|
---|
1043 | <FONT CLASS="LN">26</FONT><A NAME="1026"></A> * Must not be <code>null</code>.
|
---|
1044 | <FONT CLASS="LN">27</FONT><A NAME="1027"></A> * @param descriptions The associated target descriptions.
|
---|
1045 | <FONT CLASS="LN">28</FONT><A NAME="1028"></A> * May be <code>null</code>, in which case
|
---|
1046 | <FONT CLASS="LN">29</FONT><A NAME="1029"></A> * no descriptions are displayed.
|
---|
1047 | <FONT CLASS="LN">30</FONT><A NAME="1030"></A> * If non-<code>null</code>, this should have
|
---|
1048 | <FONT CLASS="LN">31</FONT><A NAME="1031"></A> * as many elements as <code>names</code>.
|
---|
1049 | <FONT CLASS="LN">32</FONT><A NAME="1032"></A> * @param heading The heading to display.
|
---|
1050 | <FONT CLASS="LN">33</FONT><A NAME="1033"></A> * Should not be <code>null</code>.
|
---|
1051 | <FONT CLASS="LN">34</FONT><A NAME="1034"></A> * @param maxlen The maximum length of the names of the targets.
|
---|
1052 | <FONT CLASS="LN">35</FONT><A NAME="1035"></A> * If descriptions are given, they are padded to this
|
---|
1053 | <FONT CLASS="LN">36</FONT><A NAME="1036"></A> * position so they line up (so long as the names really
|
---|
1054 | <FONT CLASS="LN">37</FONT><A NAME="1037"></A> * <i>are</i> shorter than this).
|
---|
1055 | <FONT CLASS="LN">38</FONT><A NAME="1038"></A> */</FONT>
|
---|
1056 | <FONT CLASS="LN">39</FONT><A NAME="1039"></A> <FONT CLASS="Private">private</FONT> <FONT CLASS="Static">static</FONT> <FONT CLASS="Void">void</FONT> printTargets(Project project, Vector names,
|
---|
1057 | <FONT CLASS="LN">40</FONT><A NAME="1040"></A> Vector descriptions, String heading,
|
---|
1058 | <FONT CLASS="LN">41</FONT><A NAME="1041"></A> <FONT CLASS="Int">int</FONT> maxlen) {
|
---|
1059 | <FONT CLASS="LN">42</FONT><A NAME="1042"></A> <FONT CLASS="SingleLineComment">// now, start printing the targets and their descriptions
|
---|
1060 | <FONT CLASS="LN">43</FONT><A NAME="1043"></A></FONT> String lSep = System.getProperty(<FONT CLASS="StringLiteral">"line.separator"</FONT>);
|
---|
1061 | <FONT CLASS="LN">44</FONT><A NAME="1044"></A> <FONT CLASS="SingleLineComment">// got a bit annoyed that I couldn't find a pad function
|
---|
1062 | <FONT CLASS="LN">45</FONT><A NAME="1045"></A></FONT> String spaces = <FONT CLASS="StringLiteral">" "</FONT>;
|
---|
1063 | <FONT CLASS="LN">46</FONT><A NAME="1046"></A> <FONT CLASS="While">while</FONT> (spaces.length() <= maxlen) {
|
---|
1064 | <FONT CLASS="LN">47</FONT><A NAME="1047"></A> spaces += spaces;
|
---|
1065 | <FONT CLASS="LN">48</FONT><A NAME="1048"></A> }
|
---|
1066 | <FONT CLASS="LN">49</FONT><A NAME="1049"></A> StringBuffer msg = <FONT CLASS="New">new</FONT> StringBuffer();
|
---|
1067 | <FONT CLASS="LN">50</FONT><A NAME="1050"></A> msg.append(heading);
|
---|
1068 | <FONT CLASS="LN">51</FONT><A NAME="1051"></A> msg.append(lSep);
|
---|
1069 | <FONT CLASS="LN">52</FONT><A NAME="1052"></A> msg.append(lSep);
|
---|
1070 | <FONT CLASS="LN">53</FONT><A NAME="1053"></A> <FONT CLASS="For">for</FONT> (<FONT CLASS="Int">int</FONT> i = <FONT CLASS="IntegerLiteral">0</FONT>; i < names.size(); i++) {
|
---|
1071 | <FONT CLASS="LN">54</FONT><A NAME="1054"></A> msg.append(<FONT CLASS="StringLiteral">" "</FONT>);
|
---|
1072 | <FONT CLASS="LN">55</FONT><A NAME="1055"></A> msg.append(names.elementAt(i));
|
---|
1073 | <FONT CLASS="LN">56</FONT><A NAME="1056"></A> <FONT CLASS="If">if</FONT> (descriptions != <FONT CLASS="Null">null</FONT>) {
|
---|
1074 | <FONT CLASS="LN">57</FONT><A NAME="1057"></A> msg.append(spaces.substring(<FONT CLASS="IntegerLiteral">0</FONT>, maxlen - ((String) names.elementAt(i)).length() + <FONT CLASS="IntegerLiteral">2</FONT>));
|
---|
1075 | <FONT CLASS="LN">58</FONT><A NAME="1058"></A> msg.append(descriptions.elementAt(i));
|
---|
1076 | <FONT CLASS="LN">59</FONT><A NAME="1059"></A> }
|
---|
1077 | <FONT CLASS="LN">60</FONT><A NAME="1060"></A> msg.append(lSep);
|
---|
1078 | <FONT CLASS="LN">61</FONT><A NAME="1061"></A> }
|
---|
1079 | <FONT CLASS="LN">62</FONT><A NAME="1062"></A> project.log(msg.toString());
|
---|
1080 | <FONT CLASS="LN">63</FONT><A NAME="1063"></A> }
|
---|
1081 | <FONT CLASS="LN">64</FONT><A NAME="1064"></A>}
|
---|
1082 | <FONT CLASS="LN">65</FONT><A NAME="1065"></A></pre>
|
---|
1083 | </BODY>
|
---|
1084 | </HTML> |
---|