What's new in SBuild 0.7.1
Dec 30, 2013
- SBuild core:
- Plugin API: Renamed Plugin.PluginConfigurer to Plugin.PluginHandle and
- changed the configure method to support and encourage immutable plugin
- configuration instances.
- Extended Plugin.PluginHandle by get and isModified methods.
- Check minimal required SBuild versions of plugins.
- SBuild Addons:
- ForkSupport: Changed default of parameter 'failOnError' to true in methods
- runAndWait and runJavaAndWait.
- ForkSupport: Added directory parameter to runJavaAndWait.
New in SBuild 0.7.0 (Dec 7, 2013)
- Plugin system with isolated plugin class loading and hierarchical dependency resolving.
- @classpath annotation not handles all entries as plugins (the JAR manifest will be scanned for SBuild header entries). This can be disabled by adding the prefix "raw:" to the entry.
- Extended Project API to support Plugins, mostly for internal use.
- Added Plugin trait/object to SBuild API to activate and interact with plugins.
- Project resources (@classpath, @include) will be resolved in parallel.
- Added Logger API.
- Replaced internal SBuildLogger by SBuildMonitor API.
- Support for localized output and a partial German translation.
- Check and warn for identical module definitions in a project.
- ZipSchemeHandler: When an to-be-extracted resource already exists, but has an older modification date than the zip file, re-extract it and set the modification date accordingly.
- The cmdline shortcuts support is now able to also match hyphen-delimited target names, e.g. "uS" would match "update-site".
- The project runtime classpath does include the scala library only once.
- New RichFile API with contains so filerealted methdod and can be used in implicit conversion.
- Some API cleanups.
- New --keep-going commandline option to continue to build unaffected targets even if some targets failed. At the end, a summary of all failed and skipped targets is shown. This might be useful e.g. to run all test targets (in a CI server) which otherwise might fail the build to early.
- Lock mechanism to avoid compilation of buildfiles concurrently.
- Various cleanups and package reorganizations.
- Started documentatio in AsciiDoc format.
- Added --list-plugins and --list-available-plugin commandline options to show used and unused but available plugins.
New in SBuild 0.6.0 (Sep 20, 2013)
- Fixed a bug in SBuildEmbedded concerning incomplete file lists for local file dependencies.
- New ResolveFiles API to eagerly resolve dependencies, e.g. to fulfil additional dependencies of a scheme handler.
- Changed SchemeHandler API again. Replaced the type String of the path parameter by the new type SchemeContext. With this change, a scheme handler is able to retrieve the effectively used scheme.
- Refactored initialization logic of ProjectTarget into Project. ProjectTarget is now free of any SchemeHandler logic.
- Download methods of util, HttpSchemeHandler and MvnSchemeHandler set an SBuild specific user agent. This fixed 403 Forbidden issues for some Maven repositories (e.g. Central).
- Updated dependencies: Jansi 1.11, CmdOption 0.3.1
- Added new cmdline option --jobs, -j to configure the number of targets to run in parallel.
- Improved error handling for parallel builds. A failed target now fails the complete build instantly.
- Handle invalid commandline options properly.
- Better download progress (percent, content length, url) and failure handling (resume, retry).
- Moved SBuild runner into separate project de.tototec.sbuild.runner to keep the SBuild API as small as possible.
- Improved error messages of ScanSchemeHandler.
- Added new commandline option --repeat to let SBuild repeat an action after a given time interval.
- Build script compiler now records scala compiler output, e.g. for later use in IDEs. Created new scriptcompiler project.
- Added support for sequential dependencies, which will be executed sequentially. You have to use "~~" instead of "~".
- Various internal cleanups.
New in SBuild 0.5.0 (Jul 13, 2013)
- Updated dependencies: Scala 2.10.2, Jansi 1.10.
- Added support to reference scheme handlers of other projects/modules.
- Added parameters useArgsFile, jvmArgs and sourcePath to Scalac addon.
- Added Scalac.scalaClasspath(version) classpath factory.
- Fix FileNotFoundException in execution of cacheable targets with path separators in it's name.
- Allow to evict caches per cacheable target.
- Huge speed up in up-to-date detection algorithm.
- Added SchemeHandler.replace method to make the intend to replace a already registered scheme handler explicit (and checked).
- New MapperSchemeHandler to translate schemes and/or pathes, to be used in "source" and "javadoc" scheme.
- New experimental default schemes "source" and "javadoc", that will try to provided sources and javadoc for any given dependency, e.g. "source:mvn:a.b.1" will be translated to "mvn:a.b.1;classifier=sources"
- Fixed --fsc option.
- Fixed colored output under windows.
- Bash Completion support.
- BndJar addon creates now the target directory, if it does not exists.
- New experimental scheme handler to access 'val's and 'def's in projects in new project de.tototec.sbuild.experimental.
- Added mechanism to locate files relative to included scala files, via Path[Config]("path/relative/to/Config.scala").
- Removed deprecated code: IfNotUpToDate, PersistentUpToDateChecker. Their functionality is now provided via phony cacheable targets (Target.cacheable, Target.evictCache).
- Deprecated Pathes and added Paths object.
New in SBuild 0.4.0 (Mar 12, 2013)
- Fixed --dependencyTree not showing up on when not used with --verbose.
- Added new commandline option --list-modules to show a list of all involved modules (sub-projects).
- Based up-to-date detection of phony targets on virtual last modified time stamps instead of boolean marker.
- Reworked preorder dependency algorithm.
- Improved internally used download function, which now handles successful download more efficiently and does not leave temp file on download failures. This improves all scheme handlers as well.
- Added new commandline options --check and --check-recursive to check all defined targets for cycles and potentially missing scheme handlers. This will also detect projects with cacheable targets, that do not define an evictCache target.
- Added new class Module which can be used to easily create target references to targets in that module with Module.targetRef(String) and Module.targetRefs(String*).
- Module(String) and Modules(String*) now return a Module resp. a Seq[Module].
- Deprecated Module.apply(String*) as the return value differs from Module.apply(String), which is not obvious. Use Modules.apply(String*) instead.
- Build script compiler now emits deprecation warnings.
- SBuild now has slightly colored output based on jansi.fusesource.org, which can be disabled with --no-color command line option.
- Improved error reporting on the commandline.
- Added TargetContext.attachFile to attach additional file(s) to a target. Those files are now also included in the return value of TargetRef.files.
- TargetRef.files can now only be used inside a Target execution, and only on dependencies that are declared in dependsOn of that executing target.
- Added TargetContext.prerequisitesLastModified to retrieve the effective lastModified value of all declared dependencies.
- New ScanSchemeHandler, to scan a directory, based on a pattern and attach all found files to the target context. That way, one can depend on a set of files, considering their up-to-dateness.
- New (experimental) embedded API, dedicated to SBuild embedding, e.g. in SBuild Eclipse Plugin
- Fixed return value handling in shell wrapper, resulting in sbuild command line application always returning 0.
- Updated German translations.
- Improved tolerance for truncated last modified time stamps of files.
- Also print the target self description when executing, if any.
- Added support for additional commandline options via environment variable SBUILD_OPTS.
- Added new command line options --just-clean and --just-clean-recursive to delete all .sbuild state directories (recursive) without checking and reading any SBuild build file.
- Cache Scala compiler instance when reading projects, to improve compilation speed for build files.
- Dramatic speedup of dependency tree traversal.
- New Javac addon.
- Support for newer bndlib in BndJar addon.
- Added method Module.apply to construct TargetRef.
- Empty phony targets now automatically attach their dependencies files to their own target context.
New in SBuild 0.3.2 (Jan 28, 2013)
- Common scheme handlers (mvn, http, zip) are now registered by default, but can be overridden as usual
- All by-default registered scheme handler can now be used in @classpath and @include elements
- Changed behavior of --version command line option. It now exists the application as expected
- Added new AntZipFileSet for conveniene when using AntZip
- Added new ScalaRepl addon providing access to the interactive Scala console
- Fixed issues in parser for @classpath and @include
New in SBuild 0.3.1 (Jan 18, 2013)
- Added ability to translate/resolve (any) target ref(s) to files.
- Changed default to not use fsc when compiling build files and added new commandline option "--fsc" to enable fsc.
- Pathes and file dependencies pointing to symbolic links will be no longer implicitly resolved.
- ZipSchemeHandler: Fixed up-to-date detected issue, when a ZIP entry gets always reextracted.
- ZipSchemeHandler: Fixed bug, where extraction of files, that don't exists in ZIP file, were silently ignored.
- New BndJar Addon to generate OSGi Bundles based on bndlib.
- Fixed Windows start script.
New in SBuild 0.3.0 (Jan 4, 2013)
- SBuild is now based on Scala 2.10
- ZipSchemeHandler: Fixed issue with fail of unpacking of some zip files.
- New Scalac Addon which is independent of SBuild Scalac Runtime. Thus, it is
- now possible to compile for Scala versions different than SBuild's one.
- ScalaTest Addon: Added fork option.
New in SBuild 0.2.0 (Nov 14, 2012)
- A buildfile can now include other scala files. Added @include to share common configuration and functionality.
- Added project accessor to TargetContext.
- Added --quiet command line option to suppress percentage calculation and status messages. This will drastically speed up SBuild's initialization time for larger multi-projects, as the dependency tree is not walked trough in advance.
- Added arguments parameter to AntJava, as args is deprecated.
- Added more options/parameters to ScalaTest addon.
- Command line option --create-stub now tries to copy a stub from SBuild's home directory ($SBUILD_HOME/stub/SBuild.scala) if such one exists, before using a hardcoded one.
New in SBuild 0.1.5 (Oct 27, 2012)
- Fixed NPE bug in AntCopy.
New in SBuild 0.1.4 (Oct 24, 2012)
- Added parameters to AntZip Ant wrapper: compress, keepCompression, filesOnly, fileSet, fileSete
- Added parameters to AntJar Ant wrapper: compress, keepCompression, filesOnly, metaInf, fileSet, fileSets, manifestEntries, manifestSectionEntries, service, services
- Added parameter to AntCopy Ant wrapper: fileSet
- Added @configuration annotation, to declare required configuration parameters in a project
- Eclipse plugin: Fixed an problem with an incomplete project classpath that could break loading of projects in some situations.
- Eclipse plugin: Handle errors while reading the build file and retrieving dependencies
- Improved ZipSchemeHandler: The targetFile parameter now treats its argument as path relative the to project directory.
- Internal changes in classpath handling. The various classpathes SBuild needs when reading, compiling and executing projects are now read from a properties file in the installation directory, which decouples embedded solutions like the Eclipse Plugin and allows them to load different SBuild versions.
- Added get method to Prop object, to easily test, if an property is set.
- Eclipse plugin: Decoupled plugin version from SBuild JARs. Plugin no longer includes core packages and load SBuild JARs from it installation directory.
- Ensure, ZipSchemeHandler does not overwrite files with same name from different archives.
New in SBuild 0.1.3 (Oct 20, 2012)
- Improved classloading for ScalaTest and JUnit addons.
- Incompatible API change: SchemeHandler can now have dependencies, when implementing the trait SchemeHandlerWithDependencies and have access to them through the TargetContext, which will be given as parameter into resolve method.
- Added new ZipSchemeHandler to reference zipped resources, a typical use case for original online dependencies like TestNG, JUnit or SWT.
- Fixed a bug, where the self-evaluated up-to-date state of phony targets was lost causing some unnecessary executions.
New in SBuild 0.1.2 (Oct 5, 2012)
- Fixed cross-project dependency resolution problem for file targets.
New in SBuild 0.1.1 (Oct 5, 2012)
- SBuild now builds itself. SBuild-0.1.0 is required. :-)
- SchemeHandler API changed: Return value of resolve-method changed to ResolveResult.
- Added new parameter forceDownload to HttpSchemeHandler.
- Improved/fixed up-to-date detection for prerequisites/dependencies from different projects.
- Only targets defined in buildfiles will be shown with --list and --list-rekursive, implicitly create targets will be not.
- Improved error messages.
- Imporved logging.
- Added new commandline option --dependency-tree to show the dependency tree for the requested targets.
- Better cycle-detecting in target dependencies.
- Better detection, if the buildfile needs recompilation in case that different versions of SBuild are used.
- Run SBuild JVM with more PermGemSpace to avoid OutOfMemoryErrors.
- New Eclipse Plugin that is able the provide a classpath container based on an SBuild buildfile. Therefore the function ExportDependencies was added.
- Removed parameter dir:String from AntMkDir.
- Added parameter fileSets to AntCopy.
- Added parameter jvmArgs to AntScalac.
- Added parameter failOnError to AntJava.
- Added a lot of new parameter to AntJavac.
- Added parameter envs to AntEcec.
- Added addon ScalaTest.
- Added addon JUnit.