Take excludeDependencies into account in published things

This commit is contained in:
Alexandre Archambault 2017-05-03 00:30:16 +02:00
parent 926613d10d
commit bf34774e61
5 changed files with 52 additions and 26 deletions

View File

@ -117,6 +117,31 @@ object Tasks {
lazy val sv = scalaVersion.in(projectRef).get(state)
lazy val sbv = scalaBinaryVersion.in(projectRef).get(state)
lazy val exclusions = {
var anyNonSupportedExclusionRule = false
val res = excludeDependencies
.in(projectRef)
.get(state)
.flatMap { rule =>
if (rule.artifact != "*" || rule.configurations.nonEmpty) {
state.log.warn(s"Unsupported exclusion rule $rule")
anyNonSupportedExclusionRule = true
Nil
} else
Seq(
(rule.organization, FromSbt.sbtCrossVersionName(rule.name, rule.crossVersion, sv, sbv))
)
}
.toSet
if (anyNonSupportedExclusionRule)
state.log.warn("Only supported exclusion rule fields: organization, name")
res
}
for {
allDependencies <- allDependenciesTask
} yield {
@ -125,13 +150,20 @@ object Tasks {
.map { cfg => cfg.name -> cfg.extendsConfigs.map(_.name) }
.toMap
FromSbt.project(
val proj = FromSbt.project(
projId,
allDependencies,
configMap,
sv,
sbv
)
proj.copy(
dependencies = proj.dependencies.map {
case (config, dep) =>
(config, dep.copy(exclusions = dep.exclusions ++ exclusions))
}
)
}
}
@ -443,24 +475,6 @@ object Tasks {
FromSbt.moduleVersion(_, sv, sbv)
).toMap
var anyNonSupportedExclusionRule = false
val exclusions = excludeDependencies.value.flatMap {
rule =>
if (
rule.artifact != "*" ||
rule.configurations.nonEmpty
) {
log.warn(s"Unsupported exclusion rule $rule")
anyNonSupportedExclusionRule = true
Nil
} else
Seq((rule.organization,
FromSbt.sbtCrossVersionName(rule.name, rule.crossVersion, sv, sbv)))
}.toSet
if (anyNonSupportedExclusionRule)
log.warn("Only supported exclusion rule fields: organization, name")
val resolvers =
if (sbtClassifiers)
coursierSbtResolvers.value
@ -479,10 +493,7 @@ object Tasks {
val userEnabledProfiles = mavenProfiles.value
val startRes = Resolution(
currentProject.dependencies.map {
case (_, dep) =>
dep.copy(exclusions = dep.exclusions ++ exclusions)
}.toSet,
currentProject.dependencies.map(_._2).toSet,
filter = Some(dep => !dep.optional),
userActivations =
if (userEnabledProfiles.isEmpty)

View File

@ -1,5 +1,9 @@
scalaVersion := "2.11.8"
organization := "io.get-coursier.test"
name := "sbt-coursier-exclude-dependencies"
version := "0.1.0-SNAPSHOT"
coursierCachePolicies := {
if (sys.props("os.name").startsWith("Windows"))
coursierCachePolicies.value

View File

@ -15,9 +15,18 @@ object Main extends App {
val argonautFound = classFound("argonaut.Json")
val argonautShapelessFound = classFound("argonaut.derive.MkEncodeJson")
assert(argonautShapelessFound)
assert(!shapelessFound)
assert(!argonautFound)
assert(
argonautShapelessFound,
"Expected to find class from argonaut-shapeless"
)
assert(
!shapelessFound,
"Expected not to find classes from shapeless"
)
assert(
!argonautFound,
"Expected not to find classes from argonaut"
)
Files.write(new File("output").toPath, "OK".getBytes("UTF-8"))
}

View File

@ -1,3 +1,5 @@
$ delete output
> run
$ exists output
> publishLocal
$ exec java -jar coursier launch io.get-coursier.test:sbt-coursier-exclude-dependencies_2.11:0.1.0-SNAPSHOT