View Javadoc
1   // =================== DO NOT EDIT THIS FILE ====================
2   //  Generated by Modello Velocity from model.vm
3   //  template, any modifications will be overwritten.
4   // ==============================================================
5   package org.apache.maven.api.model;
6   
7   import java.io.Serializable;
8   import java.util.ArrayList;
9   import java.util.Collection;
10  import java.util.Collections;
11  import java.util.HashMap;
12  import java.util.List;
13  import java.util.Map;
14  import org.apache.maven.api.annotations.Experimental;
15  import org.apache.maven.api.annotations.Generated;
16  import org.apache.maven.api.annotations.Immutable;
17  import org.apache.maven.api.annotations.Nonnull;
18  import org.apache.maven.api.annotations.NotThreadSafe;
19  import org.apache.maven.api.annotations.ThreadSafe;
20  
21  /**
22   * The {@code <build>} element contains informations required to build the project.
23   * Default values are defined in Super POM.
24   */
25  @Experimental
26  @Generated @ThreadSafe @Immutable
27  public class Build
28      extends BuildBase
29      implements Serializable, InputLocationTracker
30  {
31      /**
32       * This element specifies a directory containing the source of the project. The
33       * generated build system will compile the sources from this directory when the project is
34       * built. The path given is relative to the project descriptor.
35       * The default value is {@code src/main/java}.
36       */
37      final String sourceDirectory;
38      /**
39       * This element specifies a directory containing the script sources of the
40       * project. This directory is meant to be different from the sourceDirectory, in that its
41       * contents will be copied to the output directory in most cases (since scripts are
42       * interpreted rather than compiled).
43       * The default value is {@code src/main/scripts}.
44       */
45      final String scriptSourceDirectory;
46      /**
47       * This element specifies a directory containing the unit test source of the
48       * project. The generated build system will compile these directories when the project is
49       * being tested. The path given is relative to the project descriptor.
50       * The default value is {@code src/test/java}.
51       */
52      final String testSourceDirectory;
53      /**
54       * The directory where compiled application classes are placed.
55       * The default value is {@code target/classes}.
56       */
57      final String outputDirectory;
58      /**
59       * The directory where compiled test classes are placed.
60       * The default value is {@code target/test-classes}.
61       */
62      final String testOutputDirectory;
63      /**
64       * A set of build extensions to use from this project.
65       */
66      final List<Extension> extensions;
67      /** Location of the xml element for the field sourceDirectory. */
68      final InputLocation sourceDirectoryLocation;
69      /** Location of the xml element for the field scriptSourceDirectory. */
70      final InputLocation scriptSourceDirectoryLocation;
71      /** Location of the xml element for the field testSourceDirectory. */
72      final InputLocation testSourceDirectoryLocation;
73      /** Location of the xml element for the field outputDirectory. */
74      final InputLocation outputDirectoryLocation;
75      /** Location of the xml element for the field testOutputDirectory. */
76      final InputLocation testOutputDirectoryLocation;
77      /** Location of the xml element for the field extensions. */
78      final InputLocation extensionsLocation;
79  
80      /**
81        * Constructor for this class, package protected.
82        * @see Builder#build()
83        */
84      Build(
85          Collection<Plugin> plugins,
86          PluginManagement pluginManagement,
87          String defaultGoal,
88          Collection<Resource> resources,
89          Collection<Resource> testResources,
90          String directory,
91          String finalName,
92          Collection<String> filters,
93          String sourceDirectory,
94          String scriptSourceDirectory,
95          String testSourceDirectory,
96          String outputDirectory,
97          String testOutputDirectory,
98          Collection<Extension> extensions,
99          Map<Object, InputLocation> locations,
100         InputLocation location,
101         InputLocation pluginsLocation,
102         InputLocation pluginManagementLocation,
103         InputLocation defaultGoalLocation,
104         InputLocation resourcesLocation,
105         InputLocation testResourcesLocation,
106         InputLocation directoryLocation,
107         InputLocation finalNameLocation,
108         InputLocation filtersLocation,
109         InputLocation sourceDirectoryLocation,
110         InputLocation scriptSourceDirectoryLocation,
111         InputLocation testSourceDirectoryLocation,
112         InputLocation outputDirectoryLocation,
113         InputLocation testOutputDirectoryLocation,
114         InputLocation extensionsLocation
115     )
116     {
117         super(
118             plugins,
119             pluginManagement,
120             defaultGoal,
121             resources,
122             testResources,
123             directory,
124             finalName,
125             filters,
126             locations,
127             location,
128             pluginsLocation,
129             pluginManagementLocation,
130             defaultGoalLocation,
131             resourcesLocation,
132             testResourcesLocation,
133             directoryLocation,
134             finalNameLocation,
135             filtersLocation
136         );
137         this.sourceDirectory = sourceDirectory;
138         this.scriptSourceDirectory = scriptSourceDirectory;
139         this.testSourceDirectory = testSourceDirectory;
140         this.outputDirectory = outputDirectory;
141         this.testOutputDirectory = testOutputDirectory;
142         this.extensions = ImmutableCollections.copy( extensions );
143         this.sourceDirectoryLocation = sourceDirectoryLocation;
144         this.scriptSourceDirectoryLocation = scriptSourceDirectoryLocation;
145         this.testSourceDirectoryLocation = testSourceDirectoryLocation;
146         this.outputDirectoryLocation = outputDirectoryLocation;
147         this.testOutputDirectoryLocation = testOutputDirectoryLocation;
148         this.extensionsLocation = extensionsLocation;
149     }
150 
151     /**
152      * This element specifies a directory containing the source of the project. The
153      * generated build system will compile the sources from this directory when the project is
154      * built. The path given is relative to the project descriptor.
155      * The default value is {@code src/main/java}.
156      *
157      * @return a {@code String}
158      */
159     public String getSourceDirectory()
160     {
161         return this.sourceDirectory;
162     }
163 
164     /**
165      * This element specifies a directory containing the script sources of the
166      * project. This directory is meant to be different from the sourceDirectory, in that its
167      * contents will be copied to the output directory in most cases (since scripts are
168      * interpreted rather than compiled).
169      * The default value is {@code src/main/scripts}.
170      *
171      * @return a {@code String}
172      */
173     public String getScriptSourceDirectory()
174     {
175         return this.scriptSourceDirectory;
176     }
177 
178     /**
179      * This element specifies a directory containing the unit test source of the
180      * project. The generated build system will compile these directories when the project is
181      * being tested. The path given is relative to the project descriptor.
182      * The default value is {@code src/test/java}.
183      *
184      * @return a {@code String}
185      */
186     public String getTestSourceDirectory()
187     {
188         return this.testSourceDirectory;
189     }
190 
191     /**
192      * The directory where compiled application classes are placed.
193      * The default value is {@code target/classes}.
194      *
195      * @return a {@code String}
196      */
197     public String getOutputDirectory()
198     {
199         return this.outputDirectory;
200     }
201 
202     /**
203      * The directory where compiled test classes are placed.
204      * The default value is {@code target/test-classes}.
205      *
206      * @return a {@code String}
207      */
208     public String getTestOutputDirectory()
209     {
210         return this.testOutputDirectory;
211     }
212 
213     /**
214      * A set of build extensions to use from this project.
215      *
216      * @return a {@code List<Extension>}
217      */
218     @Nonnull
219     public List<Extension> getExtensions()
220     {
221         return this.extensions;
222     }
223 
224     /**
225      * Gets the location of the specified field in the input source.
226      */
227     public InputLocation getLocation( Object key )
228     {
229         if ( key instanceof String )
230         {
231             switch ( ( String ) key )
232             {
233                 case "sourceDirectory":
234                     return sourceDirectoryLocation;
235                 case "scriptSourceDirectory":
236                     return scriptSourceDirectoryLocation;
237                 case "testSourceDirectory":
238                     return testSourceDirectoryLocation;
239                 case "outputDirectory":
240                     return outputDirectoryLocation;
241                 case "testOutputDirectory":
242                     return testOutputDirectoryLocation;
243                 case "extensions":
244                     return extensionsLocation;
245             }
246         }
247         return super.getLocation( key );
248     }
249 
250     /**
251      * Creates a new builder with this object as the basis.
252      *
253      * @return a {@code Builder}
254      */
255     @Nonnull
256     public Builder with()
257     {
258         return newBuilder( this );
259     }
260     /**
261      * Creates a new {@code Build} instance using the specified plugins.
262      *
263      * @param plugins the new {@code Collection<Plugin>} to use
264      * @return a {@code Build} with the specified plugins
265      */
266     @Nonnull
267     public Build withPlugins( Collection<Plugin> plugins )
268     {
269         return with().plugins( plugins ).build();
270     }
271     /**
272      * Creates a new {@code Build} instance using the specified pluginManagement.
273      *
274      * @param pluginManagement the new {@code PluginManagement} to use
275      * @return a {@code Build} with the specified pluginManagement
276      */
277     @Nonnull
278     public Build withPluginManagement( PluginManagement pluginManagement )
279     {
280         return with().pluginManagement( pluginManagement ).build();
281     }
282     /**
283      * Creates a new {@code Build} instance using the specified defaultGoal.
284      *
285      * @param defaultGoal the new {@code String} to use
286      * @return a {@code Build} with the specified defaultGoal
287      */
288     @Nonnull
289     public Build withDefaultGoal( String defaultGoal )
290     {
291         return with().defaultGoal( defaultGoal ).build();
292     }
293     /**
294      * Creates a new {@code Build} instance using the specified resources.
295      *
296      * @param resources the new {@code Collection<Resource>} to use
297      * @return a {@code Build} with the specified resources
298      */
299     @Nonnull
300     public Build withResources( Collection<Resource> resources )
301     {
302         return with().resources( resources ).build();
303     }
304     /**
305      * Creates a new {@code Build} instance using the specified testResources.
306      *
307      * @param testResources the new {@code Collection<Resource>} to use
308      * @return a {@code Build} with the specified testResources
309      */
310     @Nonnull
311     public Build withTestResources( Collection<Resource> testResources )
312     {
313         return with().testResources( testResources ).build();
314     }
315     /**
316      * Creates a new {@code Build} instance using the specified directory.
317      *
318      * @param directory the new {@code String} to use
319      * @return a {@code Build} with the specified directory
320      */
321     @Nonnull
322     public Build withDirectory( String directory )
323     {
324         return with().directory( directory ).build();
325     }
326     /**
327      * Creates a new {@code Build} instance using the specified finalName.
328      *
329      * @param finalName the new {@code String} to use
330      * @return a {@code Build} with the specified finalName
331      */
332     @Nonnull
333     public Build withFinalName( String finalName )
334     {
335         return with().finalName( finalName ).build();
336     }
337     /**
338      * Creates a new {@code Build} instance using the specified filters.
339      *
340      * @param filters the new {@code Collection<String>} to use
341      * @return a {@code Build} with the specified filters
342      */
343     @Nonnull
344     public Build withFilters( Collection<String> filters )
345     {
346         return with().filters( filters ).build();
347     }
348     /**
349      * Creates a new {@code Build} instance using the specified sourceDirectory.
350      *
351      * @param sourceDirectory the new {@code String} to use
352      * @return a {@code Build} with the specified sourceDirectory
353      */
354     @Nonnull
355     public Build withSourceDirectory( String sourceDirectory )
356     {
357         return with().sourceDirectory( sourceDirectory ).build();
358     }
359     /**
360      * Creates a new {@code Build} instance using the specified scriptSourceDirectory.
361      *
362      * @param scriptSourceDirectory the new {@code String} to use
363      * @return a {@code Build} with the specified scriptSourceDirectory
364      */
365     @Nonnull
366     public Build withScriptSourceDirectory( String scriptSourceDirectory )
367     {
368         return with().scriptSourceDirectory( scriptSourceDirectory ).build();
369     }
370     /**
371      * Creates a new {@code Build} instance using the specified testSourceDirectory.
372      *
373      * @param testSourceDirectory the new {@code String} to use
374      * @return a {@code Build} with the specified testSourceDirectory
375      */
376     @Nonnull
377     public Build withTestSourceDirectory( String testSourceDirectory )
378     {
379         return with().testSourceDirectory( testSourceDirectory ).build();
380     }
381     /**
382      * Creates a new {@code Build} instance using the specified outputDirectory.
383      *
384      * @param outputDirectory the new {@code String} to use
385      * @return a {@code Build} with the specified outputDirectory
386      */
387     @Nonnull
388     public Build withOutputDirectory( String outputDirectory )
389     {
390         return with().outputDirectory( outputDirectory ).build();
391     }
392     /**
393      * Creates a new {@code Build} instance using the specified testOutputDirectory.
394      *
395      * @param testOutputDirectory the new {@code String} to use
396      * @return a {@code Build} with the specified testOutputDirectory
397      */
398     @Nonnull
399     public Build withTestOutputDirectory( String testOutputDirectory )
400     {
401         return with().testOutputDirectory( testOutputDirectory ).build();
402     }
403     /**
404      * Creates a new {@code Build} instance using the specified extensions.
405      *
406      * @param extensions the new {@code Collection<Extension>} to use
407      * @return a {@code Build} with the specified extensions
408      */
409     @Nonnull
410     public Build withExtensions( Collection<Extension> extensions )
411     {
412         return with().extensions( extensions ).build();
413     }
414 
415     /**
416      * Creates a new {@code Build} instance.
417      * Equivalent to {@code newInstance( true )}.
418      * @see #newInstance(boolean)
419      *
420      * @return a new {@code Build}
421      */
422     @Nonnull
423     public static Build newInstance()
424     {
425         return newInstance( true );
426     }
427 
428     /**
429      * Creates a new {@code Build} instance using default values or not.
430      * Equivalent to {@code newBuilder( withDefaults ).build()}.
431      *
432      * @param withDefaults the boolean indicating whether default values should be used
433      * @return a new {@code Build}
434      */
435     @Nonnull
436     public static Build newInstance( boolean withDefaults )
437     {
438         return newBuilder( withDefaults ).build();
439     }
440 
441     /**
442      * Creates a new {@code Build} builder instance.
443      * Equivalent to {@code newBuilder( true )}.
444      * @see #newBuilder(boolean)
445      *
446      * @return a new {@code Builder}
447      */
448     @Nonnull
449     public static Builder newBuilder()
450     {
451         return newBuilder( true );
452     }
453 
454     /**
455      * Creates a new {@code Build} builder instance using default values or not.
456      *
457      * @param withDefaults the boolean indicating whether default values should be used
458      * @return a new {@code Builder}
459      */
460     @Nonnull
461     public static Builder newBuilder( boolean withDefaults )
462     {
463         return new Builder( withDefaults );
464     }
465 
466     /**
467      * Creates a new {@code Build} builder instance using the specified object as a basis.
468      * Equivalent to {@code newBuilder( from, false )}.
469      *
470      * @param from the {@code Build} instance to use as a basis
471      * @return a new {@code Builder}
472      */
473     @Nonnull
474     public static Builder newBuilder( Build from )
475     {
476         return newBuilder( from, false );
477     }
478 
479     /**
480      * Creates a new {@code Build} builder instance using the specified object as a basis.
481      *
482      * @param from the {@code Build} instance to use as a basis
483      * @param forceCopy the boolean indicating if a copy should be forced
484      * @return a new {@code Builder}
485      */
486     @Nonnull
487     public static Builder newBuilder( Build from, boolean forceCopy )
488     {
489         return new Builder( from, forceCopy );
490     }
491 
492     /**
493      * Builder class used to create Build instances.
494      * @see #with()
495      * @see #newBuilder()
496      */
497     @NotThreadSafe
498     public static class Builder
499         extends BuildBase.Builder
500     {
501         Build base;
502         String sourceDirectory;
503         String scriptSourceDirectory;
504         String testSourceDirectory;
505         String outputDirectory;
506         String testOutputDirectory;
507         Collection<Extension> extensions;
508 
509         Builder( boolean withDefaults )
510         {
511             super( withDefaults );
512             if ( withDefaults )
513             {
514             }
515         }
516 
517         Builder( Build base, boolean forceCopy )
518         {
519             super( base, forceCopy );
520             if ( forceCopy )
521             {
522                 this.sourceDirectory = base.sourceDirectory;
523                 this.scriptSourceDirectory = base.scriptSourceDirectory;
524                 this.testSourceDirectory = base.testSourceDirectory;
525                 this.outputDirectory = base.outputDirectory;
526                 this.testOutputDirectory = base.testOutputDirectory;
527                 this.extensions = base.extensions;
528             }
529             else
530             {
531                 this.base = base;
532             }
533         }
534 
535         @Nonnull
536         public Builder plugins( Collection<Plugin> plugins )
537         {
538             this.plugins = plugins;
539             return this;
540         }
541 
542         @Nonnull
543         public Builder pluginManagement( PluginManagement pluginManagement )
544         {
545             this.pluginManagement = pluginManagement;
546             return this;
547         }
548 
549         @Nonnull
550         public Builder defaultGoal( String defaultGoal )
551         {
552             this.defaultGoal = defaultGoal;
553             return this;
554         }
555 
556         @Nonnull
557         public Builder resources( Collection<Resource> resources )
558         {
559             this.resources = resources;
560             return this;
561         }
562 
563         @Nonnull
564         public Builder testResources( Collection<Resource> testResources )
565         {
566             this.testResources = testResources;
567             return this;
568         }
569 
570         @Nonnull
571         public Builder directory( String directory )
572         {
573             this.directory = directory;
574             return this;
575         }
576 
577         @Nonnull
578         public Builder finalName( String finalName )
579         {
580             this.finalName = finalName;
581             return this;
582         }
583 
584         @Nonnull
585         public Builder filters( Collection<String> filters )
586         {
587             this.filters = filters;
588             return this;
589         }
590 
591         @Nonnull
592         public Builder sourceDirectory( String sourceDirectory )
593         {
594             this.sourceDirectory = sourceDirectory;
595             return this;
596         }
597 
598         @Nonnull
599         public Builder scriptSourceDirectory( String scriptSourceDirectory )
600         {
601             this.scriptSourceDirectory = scriptSourceDirectory;
602             return this;
603         }
604 
605         @Nonnull
606         public Builder testSourceDirectory( String testSourceDirectory )
607         {
608             this.testSourceDirectory = testSourceDirectory;
609             return this;
610         }
611 
612         @Nonnull
613         public Builder outputDirectory( String outputDirectory )
614         {
615             this.outputDirectory = outputDirectory;
616             return this;
617         }
618 
619         @Nonnull
620         public Builder testOutputDirectory( String testOutputDirectory )
621         {
622             this.testOutputDirectory = testOutputDirectory;
623             return this;
624         }
625 
626         @Nonnull
627         public Builder extensions( Collection<Extension> extensions )
628         {
629             this.extensions = extensions;
630             return this;
631         }
632 
633 
634         @Nonnull
635         public Builder location( Object key, InputLocation location )
636         {
637             if ( location != null )
638             {
639                 if ( this.locations == null )
640                 {
641                     this.locations = new HashMap<>();
642                 }
643                 this.locations.put( key, location );
644             }
645             return this;
646         }
647 
648         @Nonnull
649         public Build build()
650         {
651             if ( base != null
652                     && ( plugins == null || plugins == base.plugins )
653                     && ( pluginManagement == null || pluginManagement == base.pluginManagement )
654                     && ( defaultGoal == null || defaultGoal == base.defaultGoal )
655                     && ( resources == null || resources == base.resources )
656                     && ( testResources == null || testResources == base.testResources )
657                     && ( directory == null || directory == base.directory )
658                     && ( finalName == null || finalName == base.finalName )
659                     && ( filters == null || filters == base.filters )
660                     && ( sourceDirectory == null || sourceDirectory == base.sourceDirectory )
661                     && ( scriptSourceDirectory == null || scriptSourceDirectory == base.scriptSourceDirectory )
662                     && ( testSourceDirectory == null || testSourceDirectory == base.testSourceDirectory )
663                     && ( outputDirectory == null || outputDirectory == base.outputDirectory )
664                     && ( testOutputDirectory == null || testOutputDirectory == base.testOutputDirectory )
665                     && ( extensions == null || extensions == base.extensions )
666             )
667             {
668                 return base;
669             }
670             Map<Object, InputLocation> locations = null;
671             InputLocation location = null;
672             InputLocation pluginsLocation = null;
673             InputLocation pluginManagementLocation = null;
674             InputLocation defaultGoalLocation = null;
675             InputLocation resourcesLocation = null;
676             InputLocation testResourcesLocation = null;
677             InputLocation directoryLocation = null;
678             InputLocation finalNameLocation = null;
679             InputLocation filtersLocation = null;
680             InputLocation sourceDirectoryLocation = null;
681             InputLocation scriptSourceDirectoryLocation = null;
682             InputLocation testSourceDirectoryLocation = null;
683             InputLocation outputDirectoryLocation = null;
684             InputLocation testOutputDirectoryLocation = null;
685             InputLocation extensionsLocation = null;
686             if ( this.locations != null )
687             {
688                 locations = this.locations;
689                 location = locations.remove( "" );
690                 pluginsLocation = locations.remove( "plugins" );
691                 pluginManagementLocation = locations.remove( "pluginManagement" );
692                 defaultGoalLocation = locations.remove( "defaultGoal" );
693                 resourcesLocation = locations.remove( "resources" );
694                 testResourcesLocation = locations.remove( "testResources" );
695                 directoryLocation = locations.remove( "directory" );
696                 finalNameLocation = locations.remove( "finalName" );
697                 filtersLocation = locations.remove( "filters" );
698                 sourceDirectoryLocation = locations.remove( "sourceDirectory" );
699                 scriptSourceDirectoryLocation = locations.remove( "scriptSourceDirectory" );
700                 testSourceDirectoryLocation = locations.remove( "testSourceDirectory" );
701                 outputDirectoryLocation = locations.remove( "outputDirectory" );
702                 testOutputDirectoryLocation = locations.remove( "testOutputDirectory" );
703                 extensionsLocation = locations.remove( "extensions" );
704             }
705             return new Build(
706                 plugins != null ? plugins : ( base != null ? base.plugins : null ),
707                 pluginManagement != null ? pluginManagement : ( base != null ? base.pluginManagement : null ),
708                 defaultGoal != null ? defaultGoal : ( base != null ? base.defaultGoal : null ),
709                 resources != null ? resources : ( base != null ? base.resources : null ),
710                 testResources != null ? testResources : ( base != null ? base.testResources : null ),
711                 directory != null ? directory : ( base != null ? base.directory : null ),
712                 finalName != null ? finalName : ( base != null ? base.finalName : null ),
713                 filters != null ? filters : ( base != null ? base.filters : null ),
714                 sourceDirectory != null ? sourceDirectory : ( base != null ? base.sourceDirectory : null ),
715                 scriptSourceDirectory != null ? scriptSourceDirectory : ( base != null ? base.scriptSourceDirectory : null ),
716                 testSourceDirectory != null ? testSourceDirectory : ( base != null ? base.testSourceDirectory : null ),
717                 outputDirectory != null ? outputDirectory : ( base != null ? base.outputDirectory : null ),
718                 testOutputDirectory != null ? testOutputDirectory : ( base != null ? base.testOutputDirectory : null ),
719                 extensions != null ? extensions : ( base != null ? base.extensions : null ),
720                 locations != null ? locations : ( base != null ? base.locations : null ),
721                 location != null ? location : ( base != null ? base.location : null ),
722                 pluginsLocation != null ? pluginsLocation : ( base != null ? base.pluginsLocation : null ),
723                 pluginManagementLocation != null ? pluginManagementLocation : ( base != null ? base.pluginManagementLocation : null ),
724                 defaultGoalLocation != null ? defaultGoalLocation : ( base != null ? base.defaultGoalLocation : null ),
725                 resourcesLocation != null ? resourcesLocation : ( base != null ? base.resourcesLocation : null ),
726                 testResourcesLocation != null ? testResourcesLocation : ( base != null ? base.testResourcesLocation : null ),
727                 directoryLocation != null ? directoryLocation : ( base != null ? base.directoryLocation : null ),
728                 finalNameLocation != null ? finalNameLocation : ( base != null ? base.finalNameLocation : null ),
729                 filtersLocation != null ? filtersLocation : ( base != null ? base.filtersLocation : null ),
730                 sourceDirectoryLocation != null ? sourceDirectoryLocation : ( base != null ? base.sourceDirectoryLocation : null ),
731                 scriptSourceDirectoryLocation != null ? scriptSourceDirectoryLocation : ( base != null ? base.scriptSourceDirectoryLocation : null ),
732                 testSourceDirectoryLocation != null ? testSourceDirectoryLocation : ( base != null ? base.testSourceDirectoryLocation : null ),
733                 outputDirectoryLocation != null ? outputDirectoryLocation : ( base != null ? base.outputDirectoryLocation : null ),
734                 testOutputDirectoryLocation != null ? testOutputDirectoryLocation : ( base != null ? base.testOutputDirectoryLocation : null ),
735                 extensionsLocation != null ? extensionsLocation : ( base != null ? base.extensionsLocation : null )
736             );
737         }
738     }
739 
740 
741             
742     /**
743      * @see java.lang.Object#toString()
744      */
745     public String toString()
746     {
747         return "Build {" + super.toString() + "}";
748     }
749             
750           
751 }