Skip to content

Commit f27ac81

Browse files
committed
Merge pull request #7 from gkossakowski/partest-deps
Do not include partest and it's dependencies in generated pom.
2 parents aefc6b9 + 053193f commit f27ac81

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

build.sbt

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,39 @@ TestKeys.includeTestDependencies := true
8383

8484
libraryDependencies ++= Seq("junit" % "junit" % "4.11" % "test", "com.novocode" % "junit-interface" % "0.10" % "test")
8585

86+
// Define custom Ivy configuration called "partest". Ivy configuration is analogous to Maven scope
87+
// and allows to group dependencies together, see:
88+
// http://www.scala-sbt.org/release/docs/Detailed-Topics/Library-Management#configurations
89+
// We define custom configuration so we can resolve partest through Ivy from Maven repository.
90+
// However, by putting partest dependency in custom configuration we can make sure that
91+
// it doesn't interfere with any other dependencies. Also, we can make sure that dependencies
92+
// resolved in partest configuration NOT included in generated pom. See makePomConfiguration
93+
// setting we define below.
94+
val partestConfiguration = config("partest")
95+
96+
// Define configuration to be used to assemble the classpath for compiling and running
97+
// tests. We define it as an union of default test configuration (scope in Maven's speak)
98+
// and partest configuration.
99+
val testWithPartestConfiguration = Configurations.Test.extend(partestConfiguration)
100+
101+
// register both configurations we defined so they are processed by `update` command
102+
ivyConfigurations ++= Seq(partestConfiguration, testWithPartestConfiguration)
103+
104+
// override configuration used to assemble classpath for tests
105+
configuration in Test := testWithPartestConfiguration
106+
107+
// Define configurations (scopes in Maven's speak) that are taken into account when
108+
// generating pom. By default sbt sets MakePomConfiguration.configurations to None which is
109+
// interpreted as "include dependencies in all configurations". That would include
110+
// dependencies in partest configuration which is not what we want: see comment above
111+
// where we define the partest configuration.
112+
makePomConfiguration := makePomConfiguration.value.copy(configurations = Some(Configurations.default))
113+
86114
// default
87115
TestKeys.partestVersion := "1.0.0-RC6"
88116

89117
// the actual partest the interface calls into -- must be binary version close enough to ours
90118
// so that it can link to the compiler/lib we're using (testing)
91-
// NOTE: not sure why, but the order matters (maybe due to the binary version conflicts for xml/parser combinators pulled in for scaladoc?)
92119
libraryDependencies ++= (
93120
if (TestKeys.includeTestDependencies.value) {
94121
/**
@@ -111,8 +138,8 @@ libraryDependencies ++= (
111138
dep.exclude("org.scala-lang.modules", "scala-xml_2.11.0-M5").
112139
exclude("org.scala-lang.modules", "scala-xml_2.11.0-M4").
113140
exclude("org.scalacheck", "scalacheck_2.11.0-M5")
114-
Seq("org.scala-lang.modules" % "scala-partest-interface_2.11.0-M5" % "0.2" % "test",
115-
"org.scala-lang.modules" % "scala-partest_2.11.0-M5" % TestKeys.partestVersion.value % "test").
141+
Seq("org.scala-lang.modules" % "scala-partest-interface_2.11.0-M5" % "0.2" % "partest",
142+
"org.scala-lang.modules" % "scala-partest_2.11.0-M5" % TestKeys.partestVersion.value % "partest").
116143
map(excludeScalaXml)
117144
}
118145
else Seq.empty

0 commit comments

Comments
 (0)