- Notifications
You must be signed in to change notification settings - Fork56
Depend on Scala modules like a pro
License
scala/scala-module-dependency-sample
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This repository shows how to use these build tools:
- sbt
- Maven
to depend on Scala standard modules such as:
- scala-xml, containing the
scala.xml
package - scala-parser-combinators, containing the
scala.util.parsing
package - scala-swing, containing the
scala.swing
package
These modules were split out from the Scala standard library, beginning with Scala 2.11.
This sample demonstrates how to conditionally depend on all modules. If use only on some of the modules just edit thelibraryDependencies
definition accordingly. If you are just looking for a copy&paste snippet for yourbuild.sbt
file, here it is:
// add dependencies on standard Scala modules, in a way// supporting cross-version publishing// taken from: http://github.com/scala/scala-module-dependency-samplelibraryDependencies:= {CrossVersion.partialVersion(scalaVersion.value)match {// if Scala 2.12+ is used, use scala-swing 2.xcaseSome((2, scalaMajor))if scalaMajor>=12=> libraryDependencies.value++Seq("org.scala-lang.modules"%%"scala-xml"%"1.1.1","org.scala-lang.modules"%%"scala-parser-combinators"%"1.1.1","org.scala-lang.modules"%%"scala-swing"%"2.0.3")caseSome((2, scalaMajor))if scalaMajor>=11=> libraryDependencies.value++Seq("org.scala-lang.modules"%%"scala-xml"%"1.1.1","org.scala-lang.modules"%%"scala-parser-combinators"%"1.1.1","org.scala-lang.modules"%%"scala-swing"%"1.0.2")case _=>// or just libraryDependencies.value if you don't depend on scala-swing libraryDependencies.value:+"org.scala-lang"%"scala-swing"% scalaVersion.value }}
The followingpom.xml
snippet assumes you define ascala.compat.version
property in your pom.xml file for scala-maven-plugin 3.1.6 or later. For example, thescala.compat.version
should be set to2.11
for any Scala 2.11.x version.
<!-- taken from: http://github.com/scala/scala-module-dependency-sample--><dependency> <groupId>org.scala-lang.modules</groupId> <artifactId>scala-xml_${scala.compat.version}</artifactId> <version>1.1.1</version></dependency><dependency> <groupId>org.scala-lang.modules</groupId> <artifactId>scala-parser-combinators_${scala.compat.version}</artifactId> <version>1.1.1</version></dependency><dependency> <groupId>org.scala-lang.modules</groupId> <artifactId>scala-swing_${scala.compat.version}</artifactId> <version>2.0.3</version></dependency>
NOTE: Due to anissue in the Scala compiler, a project that uses scala-xml will compile successfully on Scala 2.11 even without an explicit dependency on thescala-xml
module. However, it will fail at runtime due to missing dependency. In order to prevent that mistake we offer a workaround. Add-nobootcp
Scala compiler option which will make scala-xml invisible to compilation classpath and your code will fail to compile when the dependency onscala-xml
is missing. Check sample pom.xml for details.
The snippet provided above allows you to declare dependencies on modules shipped against Scala 2.11. If you would like tosupport building your project with both Scala 2.10, 2.11 and 2.12 at the same time you'll need to useMaven profiles. Check thepom.xml
file in the sample project for details how to set up Maven profiles for supporting different Scala versions.
About
Depend on Scala modules like a pro
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors9
Uh oh!
There was an error while loading.Please reload this page.