@@ -41,7 +41,8 @@ object MavenProjectHelper {
4141 }
4242 case class AggregateProject (model : PomModel , dir : File , children : Seq [ProjectTree ]) extends ProjectTree
4343 case class SimpleProject (model : PomModel , dir : File ) extends ProjectTree
44-
44+ case class ProjectDep (x : ProjectTree , isTestScoped : Boolean )
45+
4546 def makeReactorProject (baseDir : File , overrideRootProjectName: Option [String ] = None ,
4647 profiles : Seq [String ], userProps : Map [String , String ]): Seq [Project ] = {
4748 // First create a tree of how things aggregate.
@@ -51,7 +52,7 @@ object MavenProjectHelper {
5152 // Create a mapping of all dependencies between projects.
5253 val depMap = makeDependencyMap(projects)
5354 // Helper to look up dependencies in the presence of absences.
54- def getDepsFor (project : ProjectTree ): Seq [ProjectTree ] =
55+ def getDepsFor (project : ProjectTree ): Seq [ProjectDep ] =
5556 depMap.getOrElse(project, Nil )
5657 // Now, sort projects in an order that we can create them.
5758 val sorted : Seq [ProjectTree ] =
@@ -61,17 +62,18 @@ object MavenProjectHelper {
6162 case _ => Nil
6263 }
6364 val deps = getDepsFor(project)
64- aggregates ++ deps
65+ aggregates ++ deps.map(_.x)
6566 }
6667 def makeProjects (toMake : Seq [ProjectTree ], made : Map [ProjectTree , Project ] = Map .empty): Seq [Project ] =
6768 toMake match {
6869 case current :: rest =>
6970 // Make a project, and add it to the stack
70- val depProjects : Seq [Project ] =
71+ val depProjects : Seq [( Project , Boolean ) ] =
7172 for {
7273 dep <- getDepsFor(current)
73- depProject <- made.get(dep)
74- } yield depProject
74+ depProject <- made.get(dep.x)
75+ isTestScoped = dep.isTestScoped
76+ } yield depProject -> isTestScoped
7577 val aggregates : Seq [Project ] =
7678 current match {
7779 case AggregateProject (_,_, children) =>
@@ -81,28 +83,33 @@ object MavenProjectHelper {
8183 } yield depProject
8284 case _ => Nil
8385 }
86+
87+ def projectToClasspathDep (x : (Project , Boolean )): ClasspathDep [ProjectReference ] = x match {
88+ case (project, true ) => project % " test->test"
89+ case (project, false ) => project
90+ }
91+
8492 // TODO - Configure debugging output....
8593 val currentProject = (
8694 Project (makeProjectName(current.model,overrideRootProjectName),current.dir)
8795 // First pull in settings from pom
8896 settings(useMavenPom:_* )
8997 // Now update depends on relationships
90- dependsOn(depProjects.map(x => x : ClasspathDep [ ProjectReference ] ):_* )
98+ dependsOn(depProjects.map(x => projectToClasspathDep(x) ):_* )
9199 // Now fix aggregate relationships
92100 aggregate(aggregates.map(x => x: ProjectReference ):_* )
93101 // Now remove any inter-project dependencies we pulled in from the maven pom.
94102 // TODO - Maybe we can fix the useMavenPom settings so we don't need to
95103 // post-filter artifacts?
96104 settings(
97105 Keys .libraryDependencies <<= Keys .libraryDependencies apply { deps =>
98- val depIds = getDepsFor(current).map(_.id).toSet
106+ val depIds = getDepsFor(current).map(_.x. id).toSet
99107 deps filterNot { dep =>
100108 val id = makeId(dep.organization, dep.name, dep.revision)
101109 depIds contains id
102110 }
103111 }
104112 )
105-
106113 )
107114 makeProjects(rest, made + (current -> currentProject))
108115 case Nil => made.values.toSeq
@@ -132,16 +139,18 @@ object MavenProjectHelper {
132139 Seq (agg) ++ agg.children.flatMap(allProjectsInTree)
133140 }
134141 // Detects dependencies between projects
135- def makeDependencyMap (projects : Seq [ProjectTree ]): Map [ProjectTree , Seq [ProjectTree ]] = {
142+ def makeDependencyMap (projects : Seq [ProjectTree ]): Map [ProjectTree , Seq [ProjectDep ]] = {
136143 val findDeps =
137144 for (project <- projects) yield {
138145 val deps =
139146 for {
140147 dep <- Option (project.model.getDependencies).map(_.asScala).getOrElse(Nil )
141148 depId = makeId(dep.getGroupId, dep.getArtifactId, dep.getVersion)
149+ isTestScope = dep.getScope == " test"
142150 pdep <- projects
143151 if pdep.id == depId
144- } yield pdep
152+ } yield ProjectDep (pdep, isTestScope)
153+
145154 project -> deps
146155 }
147156 findDeps.toMap
0 commit comments