Migration Guide
2.3 Migration Guide for 2.2.x USers
https://github.com/skinny-framework/skinny-framework/releases/tag/2.3.0
Java 8+ required
Since 2.3, we dropped Java 7 support. Use Java 8 or higher. If you need to run your skinny app on Java 7, stay in 2.2.x series.
Compatible dependencies
Key dependencies are upgraded. We’re afraid that some of them may not be binary compatible with previous versions.
- skinny-micro 1.2
- ScalikeJDBC 2.5
- Scalate 1.8
- json4s 3.5
- Jetty 9.3
- ScalaTest 3.0
- typesafe config 1.3
sbt 0.13.13
sbt 0.13.13 brought more deprecation warnings. Refer the settings in the latest blank-app project.
https://github.com/skinny-framework/skinny-framework/blob/2.3.0/skinny-blank-app/build.sbt
2.2 Migration Guide for 2.1.x USers
https://github.com/skinny-framework/skinny-framework/releases/tag/2.2.0
json4s 3.4 compatible
If you’re using Skinny’s json4s module, Skinny 2.2 modules are binary compatible with json4s 3.4.
sbt 0.13.12
Skinny 2.2.0’s blank project use build.sbt
instead of project/Build.scala
because since 0.13.12, sbt marks the Build trait deprecated and will remove it since version 1.0.
https://github.com/sbt/sbt/pull/2530
The migration from your existing project/Build.scala
to build.sbt
is not difficult. But if you’re stuck with it, check the default settings in skinny-blank-app.
Remove the build object
In build.sbt
, you don’t need a parent object which extends Build trait. Just remove it.
object SkinnyAppBuild extends Build {
}
Migrate project definition DSL
In build.sbt
, the DSL to define projects is different from project/Build.scala
. Migrate Project(...)
lazy val dev = Project(id = "dev", base = file("."),
settings = devBaseSettings ++ Seq(
name := appName + "-dev",
target := baseDirectory.value / "target" / "dev"
)
)
to (project in file(dir)).settings(...)
like this:
lazy val dev = (project in file(".")).settings(devBaseSettings).settings(
name := appName + "-dev",
target := baseDirectory.value / "target" / "dev"
)
Limitation
Unfortunately, build.sbt
doesn’t allow defining multiple sub projects which share the same base directory. Due to the limitation, the precompileDev project is disabled by default since 2.2.0. If you prefer using precompileDev project, modify build.sbt
after creating a skinny project.
2.1 Migration Guide for 2.0.x Users
https://github.com/skinny-framework/skinny-framework/releases/tag/2.1.0
ScalikeJDBC 2.4 Compatible
Although there is no API changes, Skinny ORM and related modules are compatible with ScalikeJDBC 2.4.0 or higher.
You cannot use ScalikeJDBC 2.3.x or lower version with Skinny modules 2.1.0.
2.0 Migration Guide for 1.3.x Users
https://github.com/skinny-framework/skinny-framework/releases/tag/2.0.0
Moving from Scalatra to Skinny Micro
The biggest change is moving from Scalatra to Skinny Micro. We recommend you checking the 2.0.0 blank project first.
If you’re in trouble for replacing Scalatra with Skinny Micro, please post questsions on Google Group or stackoverflow.com.
- http://skinny-framework.org/documentation/micro.html
- https://github.com/skinny-framework/skinny-micro
You’ll see deprecation warnings that point you which class to use when upgrading Skinny to 2.0. So We believe the migration should be very smooth. But in some cases, you might be in trouble. In particular, be careful about the following things:
- Replace
org.scalatra.servlet.ScalatraListener
withskinny.micro.SkinnyListener
in src/main/webapp/WEB-INF/web.xml - Rename src/main/scala/ScalatraBoostrap.scala to src/main/scala/Bootstrap.scala
- Replace all things that depend on
org.scalatra
package with new ones underskinny.micro
(also for tests) - Fix some compilation errors due to renaming or removing existing traits (not so many)
Use json4s 3.3.x
Skinny Framework 2.0 is compatible with json4s 3.3.x. Be aware that 3.2.x series will be incompatible.
1.3 Migration Guide for 1.2.x Users
https://github.com/skinny-framework/skinny-framework/releases/tag/1.3.0
Deprecated joda-time methods in WrappedResultSet are removed. If you you’re using rs.dateTime(...)
, just rename it to rs.jodaDateTime(...)
.
1.2 Migration Guide for 1.1.x Users
APIs are basically compatible. If you don’t have some extensions that depend on LocaleFeature
, RequestScopeFeature
and SkinnySessionFilter
methods,
your app will work fine without changing your code.
https://github.com/skinny-framework/skinny-framework/releases/tag/1.2.0
Though we believe migration is not difficult, please tell us here if you find something wrong.
https://github.com/skinny-framework/skinny-framework/issues
1.1 Migration Guide for 1.0.x Users
Skinny 1.1 APIs are basically compatible with Skinny 1.0 though the release includes basic dependencies’ major upgrades. If your app depends on the dependencies directly (not via Skinny APIs), you may need to update your code.
- All the components run on Scala 2.11 or Scala 2.10 (Skinny 1.0: Scala 2.10)
- Web framework runs on Java 7 or higher (Skinny 1.0: Java 6 or higher)
- Web framework is compatible with Servlet API 3.1 (Skinny 1.0: Servlet 3.0)
- Web framework depends on Scalatra 2.3 (Skinny 1.0: Scalatra 2.2)
- ORM depends on ScalikeJDBC 2.0 (Skinny 1.0: ScalikeJDBC 1.8)
- Migration command depends on Flyway 3.0 (Skinny 1.0: Flyway 2.3)
- Test support depends on ScalaTest 2.2 (Skinny 1.0: ScalaTest 1.9)
https://github.com/skinny-framework/skinny-framework/releases/tag/1.1.0
Though we believe migration is not difficult, please tell us here if you find something wrong.
https://github.com/skinny-framework/skinny-framework/issues
“org.scalatest.matchers.ShouldMatchers” is deprecated
Use “org.scalatest.Matchers” instead. Sorry to say this.
Importing “scalikejdbc.SQLInterpolation._” is deprecated
Just import only “scalikejdbc._”.
See also: https://github.com/skinny-framework/skinny-framework/commit/1e44f60e5c5d0f53ab0102697a00413ad7a696d0
Renamed joda-time APIs due to JSR-310
WrappedResultSet#dateTime
, #localDate
, #localTime
and #localDateTime
are deprecated and #jodaDateTime
and #jodaXXX are added.
See also the issue: https://github.com/scalikejdbc/scalikejdbc/issues/222
Other changes in ScalikeJDBC 2.0:
https://github.com/scalikejdbc/scalikejdbc/blob/master/notes/2.0.0.markdown
skinny package’s Scalate precompilation error
Since Scalate 1.7.0, Skinny’s blank app project’s settings fail to execute package
command.
default_ssp.scala:7: $_scalate_$default_ssp is already defined as object $_scalate_$default_ssp
Remove scalateSettings if your build settings loads it twice.
See also: https://github.com/skinny-framework/skinny-framework/commit/4ad2b874116ad3b60b76b104b2bf528106aeda87