* = bug fix + = new feature or improvement ! = change that may break dependent scripts or classes -------------------------------------------------------------------------------- Release 1.1, 2010.02.18 ================================================================================ + Upgraded SVNKit to 1.3.2. + Upgraded JUnit to 4.8.1. + Upgraded EntityFS to 1.1.5-pre2. ! Removed support for using JSR 223 script engines to run build scripts. This also removes the little support that there was for BeanShell build scripts. ! Removed the --script-engine-implementation-adapter startup argument. ! The -l startup argument now lists all available ScriptExecutors. + Added support for constant links to ApiLinksTask. + Added constructors to GZipNewWritableFileProxy and BZip2NewWritableFileProxy that uses a default overwrite strategy. * Fixed bug in HtmlLinkValidationTask's anchor matching that sometimes gave false matches. ! Deleted the ScriptEngineHolder, FutureEntityScriptStrategy, ScriptSupport, ScriptConfigurable and EvalProducer interfaces and classes. We can no longer assume that we run under a script engine. The same functionality can now be achieved using closures instead. + Added support for adding closures directly to the TaskExecutor. ! AbstractTask is now only parametrized with one parameter. The task factory parameter has been dropped since it was not used anywhere anymore. + Added support for closures to TextReplaceTF's replaces property. ! Removed the ScriptTextStrategy class. ! Removed the ScriptTargetStrategy class. ! All ScriptEngine references were removed from tasks and utility classes. We can no longer assume that we run under a script engine. ! The ScriptTask and ScriptTF was replaced with dummy version that throw exceptions! They assumed that the build script was run using a JSR 223 script engine, which no longer is the case. + Added support for closures to the ArgumentInterpreter. + Added support for closures to RecursiveProcessTF.setTargetStrategy. + Added the ThreadContextInitializer interface and the TaskExecutorThreadFactory.setThreadContextInitalizer method. + Upgraded Jython to 2.5.1. + Upgraded Groovy to version 1.7.0. + Added the --script-executor-implementation command line argument. + Added the FileSupport.getFileNameExtension method. ! Removed two deprecated launch methods from the Launcher class. * The InterpretAsEntityHolderStrategy, InterpretAsEntityStrategy, InterpretAsFileStrategy, InterpretAsFutureEntityStrategy, InterpretAsReadOnlyEntityStrategy and InterpretAsUrlStrategy objects can now interpret DirectoryRepresentation objects. * A stream that was not properly closed in the TaskPackageManager now is. ! The TaskPackageManager is now accessed through the static get() method. The TASK_PACKAGE_MANAGER constant has been removed. + Added merge Jar files example to JarTF reference doc. + Added the the JdkVersion.isSameMajorVersion and JdkVersion.isSameMajorAndMinorVersion methods. + The default JDK compliance level for an Eclipse workspace can now be read from [workspace object].getProjectRepositoryConfiguration().getJdkCompliance(). + Added the getJdkCompliance method to the EclipseJavaProjectImpl class. ! Added the generic parameter U that specifies the type of ProjectRepositoryConfiguration objects created by a ProjectRepositoryInfoCollector object. + Added the getProjectRepositoryConfiguration method to AbstractProjectRepository. ! AbstractProjectRepository now has another generic parameter U that is the type of project repository configuration used for the project repository implementation. ! The ParsedEclipseWorkspaceSettings object was renamed to EclipseWorkspaceConfiguration and now inherits ProjectRepositoryConfiguration. + Added the ProjectRepositoryInfo and ProjectRepositoryConfiguration classes. ! The ProjectRepositoryInfoCollector.collect method are now required to return a ProjectRepositoryInfo object instead of a Map. + Added the static JdkVersion.parseVersion method. Release 1.0.1, 2009.09.25 ================================================================================ + Added the --script-engine-factory-implementation startup argument. * Made the --script-engine-implementation and --script-engine-implementation-adapter startup arguments work. + Upgraded SVNKit to version 1.3.1. + Upgraded EntityFS to version 1.1.4. + Upgraded JUnit to version 4.7. + Added a singleton instance to the ReportLogAdapter class. + Added some properties to the BZip2TF task. + The bzip2 classes now use the At4J implementation by default. ! Made the BZip2ReadableFileProxy, BZip2NewWritableFileProxy and BZip2ExistingWritableFile constructors with a read-/writeFileHeader argument deprecated. ! The writeFileHeader property of BZip2TF is now deprecated. + Upgraded At4J to version 1.1. * Reintroduced the LauncherSettings.setScriptFile(File) method to make the Hudson plugin work again. + Made the target property optional for GZipTF, BZip2TF and LzmaTF. + Added the deleteSourceFile property to GZipTF, BZip2TF and LzmaTF. + Added configuration properties to the EclipseWorkspaceSettings object that makes it possible to specify project directories manually. Release 1.0, 2009.07.17 ================================================================================ + Added the InterpretationStrategies class. + Upgraded EntityFS to version 1.1.3. + Upgraded SVNKit to version 1.3.0. + Added constructors using the CompressionLevel enum to At4JZipTF, BZip2ExistingWritableFileProxy, BZip2NewWritableFileProxy, BZip2TF + Upgraded At4J to version 1.0.2. + Custom toString methods for FutureDirectory and FutureFile. + There are now just two TaskExecutor.add methods that take dependencies. The dependency or dependencies are represented by an Object that is flattened by a FlatteningList. Some script engine implementations could not use the previous methods. ! ExtProcessConfigured.getWorkingDirectory now returns an Object instead of a File. + Reworked how the ArgumentInterpreter works and added the interpret method to it. Introduced the InterpretationStrategy interface + implementations. + AbstractJavaZipTask.createIterator can now interpret Producer objects. + Added the ScriptEngineHolder.warnIfNotThreadSafe and newScriptEngine methods. ! Removed the returnVars parameter from Launcher.launch. The method now returns the object returned from the script that was run. + Added the Eval producer. + Added the TaskPackageEnableCallback interface. + Added the --script-engine-implementation-adapter startup argument. + Introduced the ScriptEngineImplementationAdapter to adapt various Schmant classes (just the FlatteningList for now) to script engine implementation specific behavior. + Added the --script-engine-implementation startup argument. + Added the FlatteningList and made many task property setter methods flattening. + MultiplexingExistingWritableFileProxy and MultiplexingNewWritableFileProxy can now handle Collection arguments. ! Changed the return value for SchmantUtil.getScriptEFile from an EFile to a NamedReadableFile. + Added varargs variants to all add methods in task factories that have Collection arguments. ! Added addDecorators varargs method to the TaskDecoratorConfigurable interface. ! Added addClasspathEntries and addClasspathDecorators varargs methods to the ClasspathConfigurable interface. ! Added addJvmOptions varargs method to the JvmConfigurable interface. ! Added addBootClasspathEntries varargs method to the BootClasspathConfigurable interface. ! Added addEnvironmentVariables varargs method to the ExtProcessConfigurable interface. ! Added addArguments varargs method to the ArgumentsConfigurable interface. ! Added addSources and setSources varargs methods to the SourceConfigurable interface. + Added a CompoundTaskDependency.addAll varargs method. + Added JRuby examples to User's Guide and task reference. + Added Jython examples to User's Guide and task reference. + Added Groovy examples to User's Guide and task reference. + Separate documents for all supported scripting languages. + Environment preparation script for Groovy build scripts. * Fixed BeanShell environment preparation script. + ApiLinksTask can now insert explicit class and package summary links using |api:link type:artifact?arg=value| placeholders. + jQueryUI accordions for task reference examples. + tfdoc-1.2.dtd for task reference documentation makes it possible to have different language implementations of code examples. The java-package attribute is now required. + The org.at4j.comp.bzip2 and .lzma packages are now imported by the org.at4j task package. + Extended the Task Author's Guide. Release 0.9.1, 2009.04.13 ================================================================================ + Upgraded EntityFS to version 1.1.2. ! Removed the taskExecutor argument from the SchmantTaskrefTask. + Added chapter on how task packages are packaged to the Task Author's guide. + Added the SchmantFileSystems.makeFileBacked and makeRandomlyAccessible methods. + The scriptFile variable is set to the running script (EFile) and is available to the running scripts. + The launcher now supports running script files in Zip files. + Made it possible to run Emma coverage analysis with the run_unit_tests.js script. * Unload task packages before deleting all temporary files in Launcher to avoid deadlocks. * Corrected section on task package file layout in the Task Author's Guide. + Added TempFileUtil methods for creating temporary File or Directory directories with a flag to tell it if they should be kept when Schmant exits. + The task reference CSS style sheet is now created in the target directory by the SchmantTaskrefTF. Release 0.9, 2009.03.22 ================================================================================ + Upgraded SVNKit to version 1.2.3. + Upgraded At4J to version 1.0.1. + Upgraded EntityFS to version 1.1.2-pre1. + Made the SimpleReportLineFormatter honor the schmant.SimpleReportLineFormatter.logTimestamp system property. + Added the errorIfReplaceNotFound property to TextReplaceTF. * Fixed JavaScript include of a file in a locking file system. + CopyTF can now handle several sources. + Added a setManifest(Manifest) method to JarTF, WarTF and EarTF. ! Added the JUnit4Reporter.validateConfiguration method. + Added the JUnit4AntXmlReporter that reports test results in Ant's XML format. + Added the SchmantFileSystems.getEntityForDirectory method with a parameter for enabling or disabling locking in the returned file system. + Added the SchmantUtil.getRelativeToScriptDirectory method. + Launcher.launch does not just throw Exception anymore. ! Added ReportFactory and ReportLineFormatter parameters to the Launcher.launch method to make it more CI tool friendly. + Added the UntarTF. + Added the At4JUnzipTF. + Added the ArgumentInterpreter.getRandomlyAccessibleFile method. ! Removed the CompoundActionTF. + schmant.sh now exits with an exit code != 0 if there is an error in the build. + Added the JavaWorkspaceBuilderTask and TF. + TaskExecutor.add now handles TaskDependency objects that are null. + Added the Task.getDependenyForTasksScheduledByThisTask method. + The EclipseWorkspace now parses user libraries from workspace metadata, if present. ! Task and TaskFactory no longer implement Runnable. They implement TaskRunnable instead. ! Renamed Generator to Producer in order to not have it confused with generator tasks. + Documented generated objects in task reference. ! FutureProperty is now a Generator. ! Implemented clear methods for collection properties. ! Added SourceConfigurable.clearSources(). ! Major refactoring that slightly changed how tasks are created by task factories. Now configuration is set on a TaskSpecification object (rather than on the task factory). Build scripts should continue to work unmodified but tasks have to be reimplemented. ! Removed Configurator:s. Use Generator:s instead. ! Removed the cacheText property from the TextAppendTF and TextPrependTF. ! Deleted the (deprecated) change report level task. + Added the FileSupport.readTextFile method taking a Charset argument. ! Deleted the deprecated GeneratorTaskSupport. + The EclipseWorkspace now parses classpath variables from the workspace metadata, if present. + The EclipseWorkspace can now handle class directory dependencies. Thanks to Gabriel Klappenbach and Mikael Ohlsson for pointing this out. + Wrote the Task Author's Guide. ! Made the TaskPackageClassLoader an abstract class instead of an interface since ClassLoader is an abstract class. + Made the TaskPackageManager.createTaskPackage method public. ! Moved abstract task and task package implementations to the org.schmant.task.stub package. + Added the org.schmant.support.io.PrintProcessOutputStrategy. ! Renamed the org.schmant.task.tp.tpfiles.InsertProjectFilesTask to org.schmant.task.text.IncludeFilesTask. The tag is now |include:x| instead of |projfile:x|. + Added the logDependencies property to the TaskExecutor. + Added support for variables in the InsertProjectFilesTask. * Fixed handling of relative File objects in ArgumentInterpreter.getFutureEntity. Thanks to Peter Sundling for finding this. + Wrote reference documentation for the TaskFactoryLinksTF. + Wrote reference documentation for the SchmantTaskrefTF. + Moved the ApiLinksTF task to the HTML tasks category. + The task package task package now automatically adds the Xalan Jars to the classpath. + Wrote reference documentation for the ArgumentInterpreterLinksTF. Release 0.8, 2009.02.08 ================================================================================ ! Renamed the "variables" property of EclipseWorkspaceSettings to "classpathVariables". Renamed setters and getters accordingly. + Updated the EntityFS samples. Added samples from the HeliDB project. + Added the AsynchronousReport and the AsynchronousStdoutReportFactory. Made the latter the default report factory. + Revisited the In-memory file systems section in the User's Guide. + Added an alias to the singleton instance called FILTER for all singleton project filters. + Added the pegRevision property to the SVNUrlToUrlCopyTask. + Upgraded SVNKit to version 1.2.2. + Added the --java argument to the startup scripts. + Included subset of EntityFS and At4J Javadocs in Schmant Javadocs. + Added the BZip2Task, LzmaTask, At4JZipTask and the TarTask. + Made all task implementation classes final and their constructors package protected. + Added the At4J task package. + Wrote section on temporary files in the User's Guide. + Refactored recursive action and process tasks to use location-aware iterators from EntityFS' Directories.getLocationAwareXXIterator. + Made TextReplaceTF configurable with a temporary directory. + Made the Schmant Launcher use the TASK_PACKAGE_PATH environment variable, if set. + Added a Schmant startup argument for choosing the ArgumentInterpreter implementation to use. + Added a Schmant startup argument for choosing the script engine to use. + Made the Javac tasks not fail if no sources are set. (They log a warning instead.) ! Renamed the getReportLevel, setReportLevel, getReportFormat and setReportFormat methods on the ExtFindbugsTF to getFindbugsReportLevel, setFindbugsReportLevel, getFindbugsReportFormat and setFindbugsReportFormat. + Added the possibility to set a report level on a task and a task factory. Made ChangeReportLevelTask deprecated. + Added the MultiplexingExistingWritableFileProxy and MultiplexingNewWritableFileProxy classes. + Added GZipReadableFileProxy, GZipExistingWritableFileProxy and GZipNewWritableFileProxy classes. ! Deleted AbstractOutputStreamProxyingProcessOneEntityTask, AbstractProcessOneEntityTask and AbstractProcessOneEntityToAFileTask. Added the AbstractProcessOneFileTask. Adapted inheriting tasks. + Added the ArgumentInterpreter.getWritableFile methods. Made all tasks that ought to use it do so. + Added the FutureFile and FutureDirectory classes. They inherit FutureEntity. ! Implemented trace mode that logs a task's configuration before it is run, and added a flag to the launcher program for enabling trace mode. Added a trace log property to Task and TaskFactory. + Added the Generator interface and let a lot of tasks implement it. Implemented support for using Generator:s in the ArgumentInterpreter. + Refactored the ProjectFilters to use EntityFS' generic filter implementations. + Added org.entityfs.ostrat to the list of autoimported packages in the build script environment preparation scripts. ! Exchanged EntityFilter for Filter everywhere. ! Made OverwriteConfigurable use an OverwriteStrategy and reimplemented all overwriting tasks. ! Upgraded EntityFS to version 1.1. This brings some changes to EntityFS' API. + Upgraded JUnit to version 4.5. + Improved error reporting when the TaskExecutor cannot complete. + Upgraded Docbook spec version to 4.5 for documentation. + Added the AlreadySatisfiedTaskDependency. * Fixed bug that occurred when setting javacExecutable on the ExtJavacTF. + Better error reporting when the TaskManager detects circular dependencies between tasks. ! Split AbstractZipTask and AbstractZipTaskFactory into AbstractZipTask/ AbstractJavaZipTask and AbstractZipFactory/AbstractJavaZipFactory. Moved the *Java* versions into the task base task factory. Deleted ZipConfigurable. + Made schmant.sh and schmant.bat work with script arguments. ! Changed the layout of task package directories: task reference sources are now under src/doc/taskref + Added the SchmantUtil.getSchmantHome method. + Added the build_task_reference_docs.js script for building task reference documentation. ! The Emma tasks were moved out to their own task package. They are no longer part of the core Schmant distribution. + Added the AbstractTextInsertionTask template + abstract factory to the task templates. Let TextReplaceTask inherit it. + Added ArgumentInterpreter.getEntityHolder. + Added the InsertProjectFilesTask + factory for including the contents of files in other files. + Added the ArgumentInterpreterLinksTask + factory for inserting links to the ArgumentInterpreter documentation in HTML documentation. + ArgumentInterpreter and DirectoryRepresentation now makes sure that the entity objects that they return are valid by calling Entities.getValidEntity. + ReplaceSourceFileTask can now work with several, chained task factories. It no longer implements TaskFactoryConfigurable. + CompoundTF.addTask and addTasks now work with task factories as well as tasks. + Added the CompoundActionTask + factory for bundling together action tasks. + Added the TaskFactoryLinksTask + factory for inserting task factory reference links in HTML documentation. + Added the ApiLinksTask + factory for inserting API links in HTML documentation. + Added the org.schmant.support.text.TextReplacer object ! Renamed TextReplacer -> ReplacementTextStrategy ScriptTextReplacer -> ScriptTextStrategy StringTextReplacer -> CapturingGroupAwareStringTextStrategy and moved them to the org.schmant.support.text package. + The XmlCatalogResolver now sets the systemId and the publicId on the entities that it resolves. + Added the DummyTaskFactory. + Added the DomParserSupport.parseFile method with an EntityResolver argument. ! Moved XmlCatalog and XmlCatalogResolver to the org.schmant.support.xml package. + Added the SchmantTaskrefTask + factory for building task reference documentation. + Added the org.schmant.task.taskpackage task package. + ProjectDependencies now extends TaskDependency. The dependency is satisfied when all projects in the ProjectDependencies object have been built. + Added the getProjects(Filter) method to the ProjectRepository interface and implemented it in the EclipseWorkspace and IntelliJWorkspace classes. + Improved XML parsing error reporting. ! Reviewed all EntityFS file locking. SchmantFileSystems now return locking file systems. + Made the interpretation of IntelliJ .iml files into a plugin, the IntelliJModuleCreatorPlugin. An implementation for Java modules is provided by the org.schmant.task.base task package. + Made the interpretation of Eclipse projects into a plugin, the EclipseProjectCreatorPlugin. An implementation for Java projects is provided by the org.schmant.task.base task package. + Added the PluginRegistry. Modified the TaskPackage to register plugins defined in the task package configuration file. ! Refactored the TaskPackageManager. Added the TaskPackage class. The task package path now requires that each task package is an individual entry, making it work more like Java's classpath. * Fixed external Jar and external class directory dependency support for Eclipse projects. + Added the FileSupport.copyFile method. + Added FutureEntity.getFileObject and getParentOrNull methods. + TaskPackageManager.getEntityFromLib now uses glob patterns to match entities. + The class loaders now use the current context class loader as parent. + Implemented toString methods on all tasks. + The source distribution now contains Eclipse workspace settings. + JarTF and WarTF now uses manifests from the source files instead of a default manifest. + New TempFileUtil.createTempDir method. + Documentation updates. + FutureEntity works with java.io.File objects too. ! Messed around with generics. + Added the preserveAttributes property to CopyTask and TreeCopyTask. + TempFileUtil now uses a wrappable, inheritable thread local TempFileContext for storing information on created temporary files, making it possible to run Schmant from Schmant without nasty side effects. + TaskPackageManager and TaskExecutors are now InheritableThreadLocals rather than static instances. This makes it easier to run several Schmant programs in parallel threads. Release 0.7.1, 2008.02.10 ================================================================================ ! Removed the TaskExecutor.getNumberOfBuildThreads method. + TaskExecutorThreadFactory now creates daemon threads. + Introduced the EclipseWorkspaceSettings and IntelliJWorkspaceSettings objects. + Added the verbose property to the XmlCatalogResolver. + Support for IntelliJ IDEA workspaces through the IntelliJWorkspace class. ! Moved all classes in org.schmant.task.factory to org.schmant.task + Upgraded EntityFS jars and samples to 1.0-rc2. + RecursiveActionTask and RecursiveProcessTask can now use file arguments. + Added the getReadWriteFile methods to the ArgumentInterpreter. + SimpleReportLineFormatter can now log a timestamp with every message. + EclipseWorkspace now handles class directory classpath entries. + Made schmant.sh honor the JAVA_EXEC environment variable, if set. + Added ExtJavadocTF example with custom tags. * schmant.bat now handles a JAVA_HOME variable with quotes in it. It also no longer whines about files not found if there are no Jar files in libengine. + Added the getJdkVersion methods to JdkUtil + Uses partial EntityFS jars instead of the full jar. + Added the validLinkCollection to HtmlLinkValidationTF + Added task factory documentation for ExtStandardDocletDecorator and the ExtPdfDocletDecorator. ! Removed the tags property from the ExtJavadocTF. It belongs in the standard doclet decorator instead. ! Removed the JavadocCustomTag class that duplicated the functionality of the JavadocTagDefinition class. Changed the code that used JavadocCustomTag to use JavadocTagDefinition instead. Added a createFromString method to JavadocTagDefinition. + Added TaskExecutor.waitFor(TaskDependency) method. + Some css changes for the documentation pages. + Added SourceConfigurable.getSource() (inherited by both ActionTask and ActionTaskFactory). + Added the TempFileUtils.createTempXXXInFSTempFilesDirectoryIfSet(FileSystem) methods. ! TempFileUtils.createTempXXX(FileSystem) now throws an exception if a temporary files directory is not set on the file system. Release 0.7, 2007.10.25 ================================================================================ + Introduced inheritance hierarchy for ProjectRepository implementations (EclipseWorkspace specifically). * Fixed Windows launcher script behavior when JAVA_HOME is invalid. + Added ArgumentInterpreter.getUrl[OrNull] methods. + Added the JarSignerTF + documentation + Added the SvnCopyTF + documentation + Made TaskExecutor.add methods return a TaskDependency. + Added the TempFileUtil.createTempDirectory(String, String, boolean) method. + Added the SchmantFileSystems.getEntityForDirectory(File, String) method. + Improved error reporting in wrapper.js. + Added the Report.getStackTraceWriter method. + Made StringTextReplacer be capture group-aware. Updated TextReplaceTF documentation. + Added Matcher argument to TextReplacer.getReplace + Upgraded EntityFS to 1.0-beta7. + HtmlLinkValidationTask now ignores contents of comments in HTML files. Made it work with ID anchors, e.g.

. + Made TempFileUtil _not_ use File.createTempFile. + Added the createRamFileSystem method to SchmantFileSystems. + Declared all concrete task factory implementations final. (Which they already were in practice anyway since setter methods returned a concrete type.) + Documentation updates. + Hid some compiler warnings with @SuppressWarnings. ! Implemented getThis() as final in AbstractConfiguratorConfigurable, AbstractTask and AbstractTargetPropertyConfigurator and removed implementations from all subclasses. + ArgumentInterpreter updates + Added the maxNoOfReplacesPerReplace property to TextReplaceTF. + Added the SvnExportTF + documentation. + Better error message if Jdk6JavacTask cannot find a compiler. + Changed default log level to WARN for messages that external process tasks write to stderr. + Added the GeneratorTaskSupport.prepareForNewEntity(DirectoryView...) method. + Added ArgumentInterpreter.getDirectory. Release 0.6, 2007.08.03 ================================================================================ + Updated EntityFS samples to versions from 1.0-beta6. + Made ArgumentInterpreter use ReadWritableFileAdapter where possible. + Upgraded EntityFS to 1.0-beta6. + Now prints log header before doing validation in AbstractTask (which means all that it is done in all tasks). * Fixed Report printing of stack traces. Added a formatStackTrace to the ReportLineFormatter. * Fixed closing of process output listeners in AbstractProcessOutputListener. + Upgraded JUnit to 4.4. + Made TextReplaceTF not require file-backed targets. ! Renamed TemplatesCompilerTF to TemplateCompilerTF. + Fixed the use of debug arguments in javac tasks. + Added the GZipTask. + Added AbstractProcessOneEntityTask, AbstractProcessOneEntityToAFileTask and AbstractOutputStreamProxyingProcessOneEntityTask. Refactored some existing tasks to inherit them. + Added the tags property to ExtJavadocTask. + Added the FutureEntityIndexStrategy. ! Removed the RenameTF and RenameTask. It did the same as the MoveTF. + Improved the API and documentation of FutureEntity. Made it thread safe. + Fixed quoting of source file names in ExtJavacTask. + Modified TaskPackageManager to make it possible to have several task package directories for one task package. This can be used to patch task packages. + New and updated unit tests. * Made the Findbugs path honor the FINDBUGS_HOME environment variable. * Fixed a bug in the ZipTask that put all ReadableFile entries in the Zip file's root directory. + Added the TaskExecutor.getStatus() method. * schmant.sh launcher script fixes. * schmant.bat launcher script fixes. + Added the FutureEntityStrategy and adapted ArgumentInterpreter.getFutureEntity to be aware of it. + Added a ProcessTask parameter to the TargetStrategy.getTarget method. + Added the ForEachSourceTF. + Reworked the ArgumentInterpreter once again. Now it is a singleton instance on the ArgumentInterpreter class. (The ArgumentInterpreterHolder is gone.) The -i startup argument disappeared, now the ArgumentInterpreter implementation can be set with the org.schmant.arg.argumentInterpreter system property. + Added the getNumberOfThreads method on TaskExecutor. Deprecated the getNumberOfBuildThreads method. + Added the disableHeaderLogging property to RecursiveActionTF and RecursiveProcessTF. + Added the FileSupport class + unit test. * Made Jdk6JavacTask close all file systems it creates. + Implemented the SchmantFileSystems utility class. Made all Schmant methods use that instead of EntityFS' FileSystems. + Implemented the SchmantReportLogAdapter. + Implemented wrapper.js, the JavaScript wrapper script. + Introduced the use of wrapper scripts for catching and logging errors that otherwise would get lost in the script engine. + Unit test updates. * Fixed bug in JUnit4TF that made it impossible to have several reporters. + Implemented the JUnit4TestSuiteReporter JUnit4Reporter + support classes. + Implemented the SaveReportToXmlFileRunListener JUnit4 RunListener. ! Moved StAXSupport to the org.schmant.support.xml.stax package. + Improved error reporting from RecursiveActionTask and RecursiveProcessTask. + Made it possible to configure a default LogLineFormatter using program arguments. ! Refactored and extended the reporting subsystem. Introduced FileReport, FileReportFactory, OverwritingFileReportFactory, MultiplexingReport, ReportLineFormatter and SimpleReportLineFormatter. + A ProjectDependencies is no longer a TaskDependency. That was mostly confusing, since the ProjectDependencies is satisfied when all its projects' dependencies are satisfied, i.e. before the last project had been compiled. This was not evident from the documentation. + Documentation updates. + Made Jdk6Javac's EntityFSFileManager work on DirectoryView:s instead of Directory:s. Release 0.5.1, 2007.06.24 ================================================================================ + Made JdkUtil, the Findbugs task and ExtJavacTask use a platform-dependent extension when searching for the command in the PATH. + Made ArgumentInterpreter implementation configurable through the -i argument + Fixed bug in prepare.js that made the include function fail if its argument was not an EFile + Added basic launch configuration validation to Launcher ! Merged TaskExecutor and AbstractTaskExecutor (to TaskExecutor). Redesigned waiting logic somewhat. * Fixed quoting of arguments in schmant.bat * Made schmant.sh work on Solaris + Made ArgumentInterpreter.getNamedReadableFileOrNull understand relative java.io.File objects. + Upgraded EntityFS to 1.0-beta5. + Added the currently running JVM as fallback for JdkUtil methods. + Upgraded JUnit from 4.2 to 4.3.1.