1 /* 2 * $Id$ 3 */ 4 5 package org.apache.maven.model; 6 7 //---------------------------------/ 8 //- Imported classes and packages -/ 9 //---------------------------------/ 10 11 import java.util.Date; 12 13 /** 14 * 15 * 16 * The <code><build></code> element contains 17 * informations required to build the project. 18 * 19 * 20 * 21 * @version $Revision$ $Date$ 22 */ 23 public class Build extends BuildBase 24 implements java.io.Serializable 25 { 26 27 28 //--------------------------/ 29 //- Class/Member Variables -/ 30 //--------------------------/ 31 32 /** 33 * This element specifies a directory containing the source of 34 * the project. The 35 * generated build system will compile the source 36 * in this directory when the project is 37 * built. The path given is relative to the project 38 * descriptor. 39 */ 40 private String sourceDirectory; 41 42 /** 43 * This element specifies a directory containing the script 44 * sources of the 45 * project. This directory is meant to be different 46 * from the sourceDirectory, in that its 47 * contents will be copied to the output directory 48 * in most cases (since scripts are 49 * interpreted rather than compiled). 50 */ 51 private String scriptSourceDirectory; 52 53 /** 54 * This element specifies a directory containing the unit test 55 * source of the 56 * project. The generated build system will compile 57 * these directories when the project is 58 * being tested. The path given is relative to the 59 * project descriptor. 60 */ 61 private String testSourceDirectory; 62 63 /** 64 * The directory where compiled application classes are placed. 65 */ 66 private String outputDirectory; 67 68 /** 69 * The directory where compiled test classes are placed. 70 */ 71 private String testOutputDirectory; 72 73 /** 74 * Field extensions. 75 */ 76 private java.util.List extensions; 77 78 79 //-----------/ 80 //- Methods -/ 81 //-----------/ 82 83 /** 84 * Method addExtension. 85 * 86 * @param extension 87 */ 88 public void addExtension( Extension extension ) 89 { 90 if ( !(extension instanceof Extension) ) 91 { 92 throw new ClassCastException( "Build.addExtensions(extension) parameter must be instanceof " + Extension.class.getName() ); 93 } 94 getExtensions().add( extension ); 95 } //-- void addExtension( Extension ) 96 97 /** 98 * Method getExtensions. 99 * 100 * @return java.util.List 101 */ 102 public java.util.List getExtensions() 103 { 104 if ( this.extensions == null ) 105 { 106 this.extensions = new java.util.ArrayList(); 107 } 108 109 return this.extensions; 110 } //-- java.util.List getExtensions() 111 112 /** 113 * Get the directory where compiled application classes are 114 * placed. 115 * 116 * @return String 117 */ 118 public String getOutputDirectory() 119 { 120 return this.outputDirectory; 121 } //-- String getOutputDirectory() 122 123 /** 124 * Get this element specifies a directory containing the script 125 * sources of the 126 * project. This directory is meant to be different 127 * from the sourceDirectory, in that its 128 * contents will be copied to the output directory 129 * in most cases (since scripts are 130 * interpreted rather than compiled). 131 * 132 * @return String 133 */ 134 public String getScriptSourceDirectory() 135 { 136 return this.scriptSourceDirectory; 137 } //-- String getScriptSourceDirectory() 138 139 /** 140 * Get this element specifies a directory containing the source 141 * of the project. The 142 * generated build system will compile the source 143 * in this directory when the project is 144 * built. The path given is relative to the project 145 * descriptor. 146 * 147 * @return String 148 */ 149 public String getSourceDirectory() 150 { 151 return this.sourceDirectory; 152 } //-- String getSourceDirectory() 153 154 /** 155 * Get the directory where compiled test classes are placed. 156 * 157 * @return String 158 */ 159 public String getTestOutputDirectory() 160 { 161 return this.testOutputDirectory; 162 } //-- String getTestOutputDirectory() 163 164 /** 165 * Get this element specifies a directory containing the unit 166 * test source of the 167 * project. The generated build system will compile 168 * these directories when the project is 169 * being tested. The path given is relative to the 170 * project descriptor. 171 * 172 * @return String 173 */ 174 public String getTestSourceDirectory() 175 { 176 return this.testSourceDirectory; 177 } //-- String getTestSourceDirectory() 178 179 /** 180 * Method removeExtension. 181 * 182 * @param extension 183 */ 184 public void removeExtension( Extension extension ) 185 { 186 if ( !(extension instanceof Extension) ) 187 { 188 throw new ClassCastException( "Build.removeExtensions(extension) parameter must be instanceof " + Extension.class.getName() ); 189 } 190 getExtensions().remove( extension ); 191 } //-- void removeExtension( Extension ) 192 193 /** 194 * Set a set of build extensions to use from this project. 195 * 196 * @param extensions 197 */ 198 public void setExtensions( java.util.List extensions ) 199 { 200 this.extensions = extensions; 201 } //-- void setExtensions( java.util.List ) 202 203 /** 204 * Set the directory where compiled application classes are 205 * placed. 206 * 207 * @param outputDirectory 208 */ 209 public void setOutputDirectory( String outputDirectory ) 210 { 211 this.outputDirectory = outputDirectory; 212 } //-- void setOutputDirectory( String ) 213 214 /** 215 * Set this element specifies a directory containing the script 216 * sources of the 217 * project. This directory is meant to be different 218 * from the sourceDirectory, in that its 219 * contents will be copied to the output directory 220 * in most cases (since scripts are 221 * interpreted rather than compiled). 222 * 223 * @param scriptSourceDirectory 224 */ 225 public void setScriptSourceDirectory( String scriptSourceDirectory ) 226 { 227 this.scriptSourceDirectory = scriptSourceDirectory; 228 } //-- void setScriptSourceDirectory( String ) 229 230 /** 231 * Set this element specifies a directory containing the source 232 * of the project. The 233 * generated build system will compile the source 234 * in this directory when the project is 235 * built. The path given is relative to the project 236 * descriptor. 237 * 238 * @param sourceDirectory 239 */ 240 public void setSourceDirectory( String sourceDirectory ) 241 { 242 this.sourceDirectory = sourceDirectory; 243 } //-- void setSourceDirectory( String ) 244 245 /** 246 * Set the directory where compiled test classes are placed. 247 * 248 * @param testOutputDirectory 249 */ 250 public void setTestOutputDirectory( String testOutputDirectory ) 251 { 252 this.testOutputDirectory = testOutputDirectory; 253 } //-- void setTestOutputDirectory( String ) 254 255 /** 256 * Set this element specifies a directory containing the unit 257 * test source of the 258 * project. The generated build system will compile 259 * these directories when the project is 260 * being tested. The path given is relative to the 261 * project descriptor. 262 * 263 * @param testSourceDirectory 264 */ 265 public void setTestSourceDirectory( String testSourceDirectory ) 266 { 267 this.testSourceDirectory = testSourceDirectory; 268 } //-- void setTestSourceDirectory( String ) 269 270 271 private String modelEncoding = "UTF-8"; 272 273 /** 274 * Set an encoding used for reading/writing the model. 275 * 276 * @param modelEncoding the encoding used when reading/writing the model. 277 */ 278 public void setModelEncoding( String modelEncoding ) 279 { 280 this.modelEncoding = modelEncoding; 281 } 282 283 /** 284 * @return the current encoding used when reading/writing this model. 285 */ 286 public String getModelEncoding() 287 { 288 return modelEncoding; 289 } 290 }