2016-02-01 22 views
8

Ho alcune librerie che dipendono da Cats. Diciamo che la nuova release Cats 0.4.0 ha il valore apiURL errato nel suo POM. Non voglio che i miei documenti API per rompere, per cui fornisco la mappatura URL con apiMappings:Sovrascrittura dei mapping API auto in SBT

.. 
    autoAPIMappings := false, 
    apiMappings ++= (fullClasspath in Compile).value.flatMap(
    entry => entry.get(moduleID.key).map(entry -> _) 
).collectFirst { 
    case (entry, module) 
     if module.organization == "org.typelevel" && 
     module.name.startsWith("cats-") => 
      entry.data 
    }.map(_ -> url("https://typelevel.org/cats/api/")).toMap, 
    apiURL := Some(url("https://travisbrown.github.io/iteratee/api/")), 
    ... 

Questo funziona bene per i collegamenti ai tipi di Gatti nei miei docs API, ma significa che perdo i link per i tipi dalla libreria standard e altre dipendenze. Se cambio autoAPIMappings a true, la mia mappatura personalizzata è scomparsa.

Questo non ha alcun senso per me: sembra che, ovviamente, le mappature esplicitamente definite non dovrebbero essere sostituite da mappature che vengono automaticamente estratte dalle POM di dipendenza.

Posso utilizzare autoAPIMappings ma sovrascriverlo per dipendenze specifiche?

risposta

1

Questo è probabilmente perché apiMappings viene ridefinito per l'attività doc, e aggiunge mappature quando si imposta autoAPImappings := true, e sostituisce quindi la vostra, che sono definite in ambito globale.

questo dovrebbe funzionare:

apiMappings in doc := ... 
+1

Grazie -questo suoni ragionevole, e cercherò fuori per confermare al più presto. –