2009-11-24 14:56:23 +01:00
DONE
2010-02-17 01:18:52 +01:00
- fixed Jetty 7 and JRebel
- fixed make-pom and missing <repositories> tag
- fixed referencing xsbti classes from project definition and plugins
- added experimental 'sbt-update version [output.jar]' command enabled by mixing in UpdateSbt trait. It probably doesn't work on Windows, but confirmation either way would be helpful.
Changes 'sbt.version' after verifying the version is valid by downloading that version of sbt.
Updates the current launcher jar or the location specified in the second argument with either a downloaded sbt-launch-<version>.jar if available or a copy of the current launcher jar that uses <version> by default when starting new projects.
2009-11-24 14:56:23 +01:00
2009-08-16 20:29:08 +02:00
Goals/Guidelines for xsbt
=====
As usual:
- Immutable interfaces
- Typesafe
- Robust, flexible API
2010-01-23 02:17:49 +01:00
2009-10-17 15:48:39 +02:00
TODO
- launcher interface versioning
2009-11-24 02:01:13 +01:00
- allow comments in datatype definition file
- tests for API extractor
2010-01-10 00:22:58 +01:00
- have background triggered commands (~sync)
2009-10-17 15:48:39 +02:00
2009-08-16 20:29:08 +02:00
Task engine
- method tasks will be normal tasks that pull the command line from a CommandLine task
2009-11-24 02:01:13 +01:00
- per task configuration, including logging (e.g. 'task compile log debug')
2010-02-17 01:18:52 +01:00
- unnamed tasks log to parent task
2009-11-24 02:01:13 +01:00
- better control over parallel logging. Approach undecided. Some possibilities:
+ optionally one task always logging
+ log each task to a file
+ interactive control over logging (might require tasks that use console to be explicit in their dependence on the console)
2009-08-16 20:29:08 +02:00
2009-11-24 02:01:13 +01:00
- Interfaces subproject that depends on no other project and defines interfaces in package xsbti. They are written in Java and cannot refer to Scala classes (compileOrder = JavaThenScala). These interfaces can be used to pass objects across ClassLoader boundaries.
2009-10-17 15:48:39 +02:00
- launcher/main interface is not static (no system properties should be used past the static entry point)
2009-08-16 20:29:08 +02:00
- simple, well-defined ClassLoaders
- use Exceptions instead of Option/Either
- every component gets its own subproject
2009-10-17 15:48:39 +02:00
- can use any version of compiler/Scala that is source compatible with the compiler-interface component
2009-08-24 04:21:15 +02:00
- build xsbt using normal cross-build conventions
2009-10-17 15:48:39 +02:00
- compiler: raw interface (no dependency analysis, but still in same jvm) or with dependency analysis
2009-08-16 20:29:08 +02:00
- compiler: can specify scala-library.jar and scala-compiler.jar + version instead of retrieving the ClassLoader
2009-11-24 02:01:13 +01:00
- compiler: new phase that extracts API defined in sources (classes, their members, and all type information)
2009-10-17 15:48:39 +02:00
- minimal dependence on main xsbt logger from subcomponents: use thin interface for subcomponents
2009-08-16 20:29:08 +02:00
Dependency Management
- resolvers are completely defined in project definition (use Resolver.withDefaultResolvers)
- configurations completely defined within project (use ModuleConfiguration.configurations)
2009-08-17 16:51:43 +02:00
2009-09-26 08:18:04 +02:00
Launcher
2009-09-27 20:39:26 +02:00
- see launch.specification
- boot interface contains static final int version = N that main xsbt can use to check if it can be loaded by that version (a lower bound check)
- main xsbt has static final int version = N that boot can use to check if it can load that version (a lower bound check)