mirror of https://github.com/sbt/sbt.git
Merge pull request #1804 from sbt/wip/document-inc-features
Add missing notes for enhance bytecode feature.
This commit is contained in:
commit
2d21797d2b
|
|
@ -0,0 +1,35 @@
|
|||
[1714]: https://github.com/sbt/sbt/issues/1714
|
||||
|
||||
|
||||
### Fixes with compatibility implications
|
||||
|
||||
### Improvements
|
||||
|
||||
### Bytecode Enhancers
|
||||
|
||||
sbt 0.13.8 adds an extension point whereby users can effectively manipulate java bytecode (.class files) *before* the
|
||||
incremental compiler attempts to cache the classfile hashes. This allows libraries like ebean to function with sbt
|
||||
without corrupting the compiler cache and rerunning compile every few seconds.
|
||||
|
||||
This splits the compile task into several subTasks:
|
||||
|
||||
1. `previousCompile`: This task returns the previously persisted `Analysis` object for this project.
|
||||
2. `compileIncremental`: This is the core logic of compiling Scala/Java files together. This task actually does the
|
||||
work of compiling a project incrementally, including ensuring a minimum number of source files are compiled.
|
||||
After this method, all .class files that would be generated by scalac + javac will be available.
|
||||
3. `manipulateByteCode`: This is a stub task which takes the `compileIncremental` result and returns it.
|
||||
Plugins which need to manipulate bytecode are expected to override this task with their own implementation, ensuring
|
||||
to call the previous behavior.
|
||||
4. `compile`: This task depends on `manipulateBytecode` and then persists the `Analysis` object containing all
|
||||
incremental compiler information.
|
||||
|
||||
Here's an example of how to hook the new `manipulateBytecode` key in your own plugin:
|
||||
|
||||
manipulateBytecode in Compile := {
|
||||
val previous = (manipulateBytecode in Compile).value
|
||||
doManipulateBytecode(previous) // Note: This must return a new Compiler.CompileResult with our changes.
|
||||
}
|
||||
|
||||
See [#1714][1714] for the full details of the implementation.
|
||||
|
||||
### Bug fixes
|
||||
Loading…
Reference in New Issue