mirror of https://github.com/sbt/sbt.git
commit
e7ca095303
|
|
@ -1,7 +1,7 @@
|
|||
language: scala
|
||||
scala:
|
||||
- 2.10.6
|
||||
- 2.11.7
|
||||
- 2.11.8
|
||||
jdk:
|
||||
- oraclejdk8
|
||||
- oraclejdk7
|
||||
- openjdk7
|
||||
- oraclejdk7
|
||||
- oraclejdk8
|
||||
|
|
|
|||
21
build.sbt
21
build.sbt
|
|
@ -14,23 +14,10 @@ def commonSettings: Seq[Setting[_]] = Seq(
|
|||
testOptions += Tests.Argument(TestFrameworks.ScalaCheck, "-w", "1"),
|
||||
javacOptions in compile ++= Seq("-target", "6", "-source", "6", "-Xlint", "-Xlint:-serial"),
|
||||
incOptions := incOptions.value.withNameHashing(true),
|
||||
crossScalaVersions := Seq(scala210, scala211),
|
||||
crossScalaVersions := Seq(scala211),
|
||||
resolvers += Resolver.sonatypeRepo("public"),
|
||||
scalacOptions ++= Seq(
|
||||
"-encoding", "utf8",
|
||||
"-deprecation",
|
||||
"-feature",
|
||||
"-unchecked",
|
||||
"-Xlint",
|
||||
"-language:higherKinds",
|
||||
"-language:implicitConversions",
|
||||
"-Xfuture",
|
||||
"-Yinline-warnings",
|
||||
"-Xfatal-warnings",
|
||||
"-Yno-adapted-args",
|
||||
"-Ywarn-dead-code",
|
||||
"-Ywarn-numeric-widen",
|
||||
"-Ywarn-value-discard"),
|
||||
scalacOptions += "-Ywarn-unused",
|
||||
scalacOptions += "-Ywarn-unused-import",
|
||||
previousArtifact := None, // Some(organization.value %% moduleName.value % "1.0.0"),
|
||||
publishArtifact in Compile := true,
|
||||
publishArtifact in Test := false
|
||||
|
|
@ -51,7 +38,6 @@ lazy val root = (project in file(".")).
|
|||
publish := {},
|
||||
publishLocal := {},
|
||||
publishArtifact in Compile := false,
|
||||
publishArtifact in Test := false,
|
||||
publishArtifact := false,
|
||||
customCommands
|
||||
)
|
||||
|
|
@ -64,7 +50,6 @@ lazy val lm = (project in file("librarymanagement")).
|
|||
utilLogging, sbtIO, utilTesting % Test,
|
||||
utilCollection, utilCompletion, ivy, jsch, sbtSerialization, scalaReflect.value, launcherInterface),
|
||||
resourceGenerators in Compile <+= (version, resourceManaged, streams, compile in Compile) map Util.generateVersionFile,
|
||||
publishArtifact in Test := false,
|
||||
binaryIssueFilters ++= Seq()
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
*/
|
||||
package sbt.internal.librarymanagement
|
||||
|
||||
import java.io.{ File, FileOutputStream }
|
||||
import java.io.File
|
||||
import java.util.concurrent.Callable
|
||||
import sbt.util.Logger
|
||||
import sbt.librarymanagement._
|
||||
|
|
@ -57,7 +57,6 @@ class ComponentManager(globalLock: xsbti.GlobalLock, provider: xsbti.ComponentPr
|
|||
case xs => invalid("Expected single file for component '" + id + "', found: " + xs.mkString(", "))
|
||||
}
|
||||
private def invalid(msg: String) = throw new InvalidComponent(msg)
|
||||
private def invalid(e: NotInCache) = throw new InvalidComponent(e.getMessage, e)
|
||||
|
||||
def define(id: String, files: Iterable[File]) = lockLocalCache { provider.defineComponent(id, files.toSeq.toArray) }
|
||||
/** Retrieve the file for component 'id' from the local repository. */
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ package sbt.internal.librarymanagement
|
|||
|
||||
import java.net.URL
|
||||
import java.util.Collections
|
||||
import org.apache.ivy.core.module.id.ModuleRevisionId
|
||||
import org.apache.ivy.core.module.descriptor.DependencyDescriptor
|
||||
import org.apache.ivy.core.resolve.ResolveData
|
||||
import org.apache.ivy.core.settings.IvySettings
|
||||
|
|
@ -245,7 +244,7 @@ private[sbt] object ConvertResolver {
|
|||
}
|
||||
fireTransferInitiated(resource, TransferEvent.REQUEST_PUT);
|
||||
try {
|
||||
var totalLength = source.length
|
||||
val totalLength = source.length
|
||||
if (totalLength > 0) {
|
||||
progress.setTotalLength(totalLength);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,10 +11,8 @@ import org.apache.ivy.util.extendable.ExtendableItem
|
|||
|
||||
import java.io.{ File, InputStream }
|
||||
import java.net.URL
|
||||
import java.util.regex.Pattern
|
||||
import sbt.internal.librarymanagement.mavenint.{ PomExtraDependencyAttributes, SbtPomExtraProperties }
|
||||
import sbt.io.Hash
|
||||
import sbt.librarymanagement._
|
||||
|
||||
// @deprecated("We now use an Aether-based pom parser.", "0.13.8")
|
||||
final class CustomPomParser(delegate: ModuleDescriptorParser, transform: (ModuleDescriptorParser, ModuleDescriptor) => ModuleDescriptor) extends ModuleDescriptorParser {
|
||||
|
|
@ -99,12 +97,6 @@ object CustomPomParser {
|
|||
// parses the immediate text nodes of the property.
|
||||
val extraDepAttributes = getDependencyExtra(filtered)
|
||||
|
||||
// Fixes up the detected extension in some cases missed by Ivy.
|
||||
val convertArtifacts = artifactExtIncorrect(md)
|
||||
|
||||
// Merges artifact sections for duplicate dependency definitions
|
||||
val mergeDuplicates = IvySbt.hasDuplicateDependencies(md.getDependencies)
|
||||
|
||||
val unqualify = toUnqualify(filtered)
|
||||
|
||||
// Here we always add extra attributes. There's a scenario where parent-pom information corrupts child-poms with "e:" namespaced xml elements
|
||||
|
|
@ -123,12 +115,8 @@ object CustomPomParser {
|
|||
private[sbt] def toUnqualify(propertyAttributes: Map[String, String]): Map[String, String] =
|
||||
(propertyAttributes - ExtraAttributesKey) map { case (k, v) => ("e:" + k, v) }
|
||||
|
||||
private[this] def artifactExtIncorrect(md: ModuleDescriptor): Boolean =
|
||||
md.getConfigurations.exists(conf => md.getArtifacts(conf.getName).exists(art => JarPackagings(art.getExt)))
|
||||
private[this] def shouldBeUnqualified(m: Map[String, String]): Map[String, String] = m.filterKeys(unqualifiedKeys)
|
||||
|
||||
private[this] def condAddExtra(properties: Map[String, String], id: ModuleRevisionId): ModuleRevisionId =
|
||||
if (properties.isEmpty) id else addExtra(properties, id)
|
||||
private[this] def addExtra(properties: Map[String, String], id: ModuleRevisionId): ModuleRevisionId =
|
||||
{
|
||||
import collection.JavaConverters._
|
||||
|
|
@ -167,8 +155,6 @@ object CustomPomParser {
|
|||
}
|
||||
private[this] def transform(dep: DependencyDescriptor, f: ModuleRevisionId => ModuleRevisionId): DependencyDescriptor =
|
||||
DefaultDependencyDescriptor.transformInstance(dep, namespaceTransformer(dep.getDependencyRevisionId, f), false)
|
||||
private[this] def extraTransformer(txId: ModuleRevisionId, extra: Map[String, String]): NamespaceTransformer =
|
||||
namespaceTransformer(txId, revId => addExtra(extra, revId))
|
||||
|
||||
private[this] def namespaceTransformer(txId: ModuleRevisionId, f: ModuleRevisionId => ModuleRevisionId): NamespaceTransformer =
|
||||
new NamespaceTransformer {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import org.apache.ivy.core.settings.IvySettings
|
|||
import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser
|
||||
import org.apache.ivy.plugins.repository.Resource
|
||||
import org.apache.ivy.plugins.repository.url.URLResource
|
||||
import sbt.librarymanagement._
|
||||
|
||||
/** Subclasses the default Ivy file parser in order to provide access to protected methods.*/
|
||||
private[sbt] object CustomXmlParser extends XmlModuleDescriptorParser {
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ import org.apache.ivy.core.resolve.{ DownloadOptions, ResolveData, ResolvedModul
|
|||
import org.apache.ivy.core.search.{ ModuleEntry, OrganisationEntry, RevisionEntry }
|
||||
import org.apache.ivy.core.settings.IvySettings
|
||||
import org.apache.ivy.plugins.namespace.Namespace
|
||||
import org.apache.ivy.plugins.repository.url.URLResource
|
||||
import org.apache.ivy.plugins.resolver.{ DependencyResolver, ResolverSettings }
|
||||
import org.apache.ivy.plugins.resolver.util.ResolvedResource
|
||||
|
||||
|
|
@ -77,7 +76,6 @@ private[sbt] class FakeResolver(private var name: String, cacheDir: File, module
|
|||
val report = new DownloadReport
|
||||
|
||||
artifacts foreach { art =>
|
||||
val artifactOrigin = locate(art)
|
||||
Option(locate(art)) foreach (o => report.addArtifactReport(download(o, options)))
|
||||
}
|
||||
|
||||
|
|
@ -177,10 +175,6 @@ private[sbt] class FakeResolver(private var name: String, cacheDir: File, module
|
|||
|
||||
override def setSettings(settings: ResolverSettings): Unit = ()
|
||||
|
||||
private class LocalURLResource(jar: File) extends URLResource(jar.toURI.toURL) {
|
||||
override def isLocal(): Boolean = true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private[sbt] object FakeResolver {
|
||||
|
|
|
|||
|
|
@ -5,35 +5,25 @@ package sbt.internal.librarymanagement
|
|||
|
||||
import java.io.File
|
||||
import java.net.URI
|
||||
import java.text.ParseException
|
||||
import java.util.concurrent.Callable
|
||||
import java.util.{ Collection, Collections => CS, Date }
|
||||
import CS.singleton
|
||||
|
||||
import org.apache.ivy.Ivy
|
||||
import org.apache.ivy.core.report.ResolveReport
|
||||
import org.apache.ivy.core.{ IvyPatternHelper, LogOptions, IvyContext }
|
||||
import org.apache.ivy.core.cache.{ ResolutionCacheManager, CacheMetadataOptions, DefaultRepositoryCacheManager, ModuleDescriptorWriter }
|
||||
import org.apache.ivy.core.IvyPatternHelper
|
||||
import org.apache.ivy.core.cache.{ CacheMetadataOptions, DefaultRepositoryCacheManager }
|
||||
import org.apache.ivy.core.event.EventManager
|
||||
import org.apache.ivy.core.module.descriptor.{ Artifact => IArtifact, DefaultArtifact, DefaultDependencyArtifactDescriptor, MDArtifact }
|
||||
import org.apache.ivy.core.module.descriptor.{ DefaultDependencyDescriptor, DefaultModuleDescriptor, DependencyDescriptor, ModuleDescriptor, License }
|
||||
import org.apache.ivy.core.module.descriptor.OverrideDependencyDescriptorMediator
|
||||
import org.apache.ivy.core.module.id.{ ArtifactId, ModuleId, ModuleRevisionId }
|
||||
import org.apache.ivy.core.module.id.{ ModuleId, ModuleRevisionId }
|
||||
import org.apache.ivy.core.resolve._
|
||||
import org.apache.ivy.core.settings.IvySettings
|
||||
import org.apache.ivy.core.sort.SortEngine
|
||||
import org.apache.ivy.plugins.latest.{ LatestStrategy, LatestRevisionStrategy, ArtifactInfo }
|
||||
import org.apache.ivy.plugins.matcher.PatternMatcher
|
||||
import org.apache.ivy.plugins.parser.m2.{ PomModuleDescriptorParser }
|
||||
import org.apache.ivy.plugins.resolver.{ ChainResolver, DependencyResolver, BasicResolver }
|
||||
import org.apache.ivy.plugins.resolver.util.{ HasLatestStrategy, ResolvedResource }
|
||||
import org.apache.ivy.plugins.version.ExactVersionMatcher
|
||||
import org.apache.ivy.plugins.repository.file.{ FileResource, FileRepository => IFileRepository }
|
||||
import org.apache.ivy.plugins.repository.url.URLResource
|
||||
import org.apache.ivy.util.{ Message, MessageLogger, StringUtils => IvyStringUtils }
|
||||
import org.apache.ivy.plugins.resolver.DependencyResolver
|
||||
import org.apache.ivy.util.{ Message, MessageLogger }
|
||||
import org.apache.ivy.util.extendable.ExtendableItem
|
||||
|
||||
import scala.xml.{ NodeSeq, Text }
|
||||
import scala.xml.NodeSeq
|
||||
import scala.collection.mutable
|
||||
|
||||
import sbt.util.Logger
|
||||
|
|
@ -44,12 +34,13 @@ import ivyint.{ CachedResolutionResolveEngine, CachedResolutionResolveCache, Sbt
|
|||
final class IvySbt(val configuration: IvyConfiguration) {
|
||||
import configuration.baseDirectory
|
||||
|
||||
/**
|
||||
/*
|
||||
* ========== Configuration/Setup ============
|
||||
* This part configures the Ivy instance by first creating the logger interface to ivy, then IvySettings, and then the Ivy instance.
|
||||
* These are lazy so that they are loaded within the right context. This is important so that no Ivy XML configuration needs to be loaded,
|
||||
* saving some time. This is necessary because Ivy has global state (IvyContext, Message, DocumentBuilder, ...).
|
||||
*/
|
||||
|
||||
private def withDefaultLogger[T](logger: MessageLogger)(f: => T): T =
|
||||
{
|
||||
def action() =
|
||||
|
|
@ -119,7 +110,8 @@ final class IvySbt(val configuration: IvyConfiguration) {
|
|||
private lazy val ivy: Ivy = mkIvy
|
||||
// Must be the same file as is used in Update in the launcher
|
||||
private lazy val ivyLockFile = new File(settings.getDefaultIvyUserDir, ".sbt.ivy.lock")
|
||||
/** ========== End Configuration/Setup ============*/
|
||||
|
||||
// ========== End Configuration/Setup ============
|
||||
|
||||
/** Uses the configured Ivy instance within a safe context.*/
|
||||
def withIvy[T](log: Logger)(f: Ivy => T): T =
|
||||
|
|
@ -269,7 +261,7 @@ private[sbt] object IvySbt {
|
|||
settings.addResolver(chain)
|
||||
chain
|
||||
}
|
||||
val otherChain = makeChain("Other", "sbt-other", other)
|
||||
makeChain("Other", "sbt-other", other)
|
||||
val mainChain = makeChain("Default", "sbt-chain", resolvers)
|
||||
settings.setDefaultResolver(mainChain.getName)
|
||||
}
|
||||
|
|
@ -461,15 +453,6 @@ private[sbt] object IvySbt {
|
|||
if (map.isEmpty) null else scala.collection.JavaConversions.mapAsJavaMap(map)
|
||||
}
|
||||
|
||||
private object javaMap {
|
||||
import java.util.{ HashMap, Map }
|
||||
def apply[K, V](pairs: (K, V)*): Map[K, V] =
|
||||
{
|
||||
val map = new HashMap[K, V]
|
||||
pairs.foreach { case (key, value) => map.put(key, value) }
|
||||
map
|
||||
}
|
||||
}
|
||||
/** Creates a full ivy file for 'module' using the 'dependencies' XML as the part after the <info>...</info> section. */
|
||||
private def wrapped(module: ModuleID, dependencies: NodeSeq) =
|
||||
{
|
||||
|
|
@ -608,7 +591,7 @@ private[sbt] object IvySbt {
|
|||
parser.parseDepsConfs(confs, dependencyDescriptor)
|
||||
}
|
||||
for (artifact <- dependency.explicitArtifacts) {
|
||||
import artifact.{ name, classifier, `type`, extension, url }
|
||||
import artifact.{ name, `type`, extension, url }
|
||||
val extraMap = extra(artifact)
|
||||
val ivyArtifact = new DefaultDependencyArtifactDescriptor(dependencyDescriptor, name, `type`, extension, url.orNull, extraMap)
|
||||
copyConfigurations(artifact, ivyArtifact.addConfiguration)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@
|
|||
package sbt.internal.librarymanagement
|
||||
|
||||
import java.io.File
|
||||
import java.net.URL
|
||||
|
||||
import org.apache.ivy.core.cache.{ ArtifactOrigin, CacheDownloadOptions, DefaultRepositoryCacheManager }
|
||||
import org.apache.ivy.core.module.descriptor.{ Artifact => IvyArtifact, DefaultArtifact }
|
||||
|
|
@ -69,7 +68,7 @@ class IvyCache(val ivyHome: Option[File]) {
|
|||
/** Calls the given function with the default Ivy cache.*/
|
||||
def withDefaultCache[T](lock: Option[xsbti.GlobalLock], log: Logger)(f: DefaultRepositoryCacheManager => T): T =
|
||||
{
|
||||
val (ivy, local) = basicLocalIvy(lock, log)
|
||||
val (ivy, _) = basicLocalIvy(lock, log)
|
||||
ivy.withIvy(log) { ivy =>
|
||||
val cache = ivy.getSettings.getDefaultRepositoryCacheManager.asInstanceOf[DefaultRepositoryCacheManager]
|
||||
cache.setUseOrigin(false)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
package sbt.internal.librarymanagement
|
||||
|
||||
import java.io.File
|
||||
import java.net.{ URI, URL }
|
||||
import java.net.URI
|
||||
import scala.xml.NodeSeq
|
||||
import sbt.util.Logger
|
||||
import sbt.librarymanagement._
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ package sbt.internal.librarymanagement
|
|||
|
||||
import org.apache.ivy.util.{ Message, MessageLogger, MessageLoggerEngine }
|
||||
import sbt.util.Logger
|
||||
import sbt.librarymanagement._
|
||||
|
||||
/** Interface to Ivy logging. */
|
||||
private final class IvyLoggerInterface(logger: Logger) extends MessageLogger {
|
||||
|
|
@ -52,4 +51,4 @@ private final class SbtMessageLoggerEngine extends MessageLoggerEngine {
|
|||
private object SbtIvyLogger {
|
||||
val UnknownResolver = "unknown resolver"
|
||||
def acceptError(msg: String) = (msg ne null) && !msg.startsWith(UnknownResolver)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ package sbt.internal.librarymanagement
|
|||
import java.io.File
|
||||
import java.{ util => ju }
|
||||
import collection.mutable
|
||||
import java.net.URL
|
||||
import org.apache.ivy.core.{ module, report, resolve }
|
||||
import module.descriptor.{ Artifact => IvyArtifact, License => IvyLicense }
|
||||
import module.id.{ ModuleRevisionId, ModuleId => IvyModuleId }
|
||||
|
|
@ -52,7 +51,6 @@ object IvyRetrieve {
|
|||
// only the revolved modules.
|
||||
// Sometimes the entire module can be excluded via rules etc.
|
||||
private[sbt] def organizationArtifactReports(confReport: ConfigurationResolveReport): Seq[OrganizationArtifactReport] = {
|
||||
val dependencies = confReport.getModuleRevisionIds.toArray.toVector collect { case revId: ModuleRevisionId => revId }
|
||||
val moduleIds = confReport.getModuleIds.toArray.toVector collect { case mId: IvyModuleId => mId }
|
||||
def organizationArtifact(mid: IvyModuleId): OrganizationArtifactReport = {
|
||||
val deps = confReport.getNodes(mid).toArray.toVector collect { case node: IvyNode => node }
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
package sbt.internal.librarymanagement
|
||||
|
||||
import java.io.File
|
||||
import java.net.URL
|
||||
import org.apache.ivy.core
|
||||
import core.module.descriptor.ModuleDescriptor
|
||||
import sbt.serialization._
|
||||
import java.net.{ URLEncoder, URLDecoder }
|
||||
import sbt.util.Logger
|
||||
import sbt.librarymanagement._
|
||||
|
||||
|
|
|
|||
|
|
@ -369,7 +369,6 @@ class MakePom(val log: Logger) {
|
|||
|
||||
def makeRepositories(settings: IvySettings, includeAll: Boolean, filterRepositories: MavenRepository => Boolean) =
|
||||
{
|
||||
class MavenRepo(name: String, snapshots: Boolean, releases: Boolean)
|
||||
val repositories = if (includeAll) allResolvers(settings) else resolvers(settings.getDefaultResolver)
|
||||
val mavenRepositories =
|
||||
repositories.flatMap {
|
||||
|
|
|
|||
|
|
@ -7,15 +7,14 @@ import java.io.File
|
|||
import java.util.Date
|
||||
|
||||
import org.apache.ivy.core.{ cache, module, report, resolve, search }
|
||||
import cache.{ ArtifactOrigin, RepositoryCacheManager }
|
||||
import cache.ArtifactOrigin
|
||||
import search.{ ModuleEntry, OrganisationEntry, RevisionEntry }
|
||||
import module.id.ModuleRevisionId
|
||||
import module.descriptor.{ Artifact => IArtifact, DefaultArtifact, DependencyDescriptor, ModuleDescriptor }
|
||||
import org.apache.ivy.plugins.namespace.Namespace
|
||||
import org.apache.ivy.plugins.resolver.{ DependencyResolver, ResolverSettings }
|
||||
import org.apache.ivy.plugins.resolver.ResolverSettings
|
||||
import report.{ ArtifactDownloadReport, DownloadReport, DownloadStatus, MetadataArtifactDownloadReport }
|
||||
import resolve.{ DownloadOptions, ResolveData, ResolvedModuleRevision }
|
||||
import sbt.librarymanagement._
|
||||
|
||||
/**
|
||||
* A Resolver that uses a predefined mapping from module ids to in-memory descriptors.
|
||||
|
|
|
|||
|
|
@ -1,13 +1,11 @@
|
|||
package sbt.internal.librarymanagement
|
||||
|
||||
import java.io.File
|
||||
import java.io.FileInputStream
|
||||
import java.util.Properties
|
||||
import org.apache.ivy.core
|
||||
import org.apache.ivy.plugins.parser
|
||||
import core.IvyPatternHelper
|
||||
import core.settings.IvySettings
|
||||
import core.cache.{ CacheMetadataOptions, DefaultRepositoryCacheManager, DefaultResolutionCacheManager, ResolutionCacheManager }
|
||||
import core.cache.ResolutionCacheManager
|
||||
import core.module.id.ModuleRevisionId
|
||||
import core.module.descriptor.ModuleDescriptor
|
||||
import ResolutionCache.{ Name, ReportDirectory, ResolvedName, ResolvedPattern }
|
||||
|
|
@ -78,9 +76,6 @@ private[sbt] object ResolutionCache {
|
|||
|
||||
private val ReportDirectory = "reports"
|
||||
|
||||
// name of the file providing a dependency resolution report for a configuration
|
||||
private val ReportFileName = "report.xml"
|
||||
|
||||
// base name (name except for extension) of resolution report file
|
||||
private val ResolvedName = "resolved.xml"
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package internal
|
|||
package librarymanagement
|
||||
|
||||
import java.io.File
|
||||
import java.net.URL
|
||||
import sbt.librarymanagement._
|
||||
|
||||
/** Provides extra methods for filtering the contents of an `UpdateReport` and for obtaining references to a selected subset of the underlying files. */
|
||||
|
|
|
|||
|
|
@ -29,17 +29,11 @@ final class GroupID private[sbt] (private[sbt] val groupID: String) {
|
|||
def %(artifactID: String) = groupArtifact(artifactID, CrossVersion.Disabled)
|
||||
def %%(artifactID: String): GroupArtifactID = groupArtifact(artifactID, CrossVersion.binary)
|
||||
|
||||
@deprecated(deprecationMessage, "0.12.0")
|
||||
def %%(artifactID: String, crossVersion: String => String) = groupArtifact(artifactID, CrossVersion.binaryMapped(crossVersion))
|
||||
@deprecated(deprecationMessage, "0.12.0")
|
||||
def %%(artifactID: String, alternatives: (String, String)*) = groupArtifact(artifactID, CrossVersion.binaryMapped(Map(alternatives: _*) orElse { case s => s }))
|
||||
|
||||
private def groupArtifact(artifactID: String, cross: CrossVersion) =
|
||||
{
|
||||
nonEmpty(artifactID, "Artifact ID")
|
||||
new GroupArtifactID(groupID, artifactID, cross)
|
||||
}
|
||||
private[this] def deprecationMessage = """Use the cross method on the constructed ModuleID. For example: ("a" % "b" % "1").cross(...)"""
|
||||
}
|
||||
final class GroupArtifactID private[sbt] (
|
||||
private[sbt] val groupID: String,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package sbt.internal.librarymanagement
|
|||
package ivyint
|
||||
|
||||
import java.util.Date
|
||||
import java.net.URL
|
||||
import java.io.File
|
||||
import java.text.SimpleDateFormat
|
||||
import collection.concurrent
|
||||
|
|
@ -12,19 +11,18 @@ import org.apache.ivy.Ivy
|
|||
import org.apache.ivy.core
|
||||
import core.resolve._
|
||||
import core.module.id.{ ModuleRevisionId, ModuleId => IvyModuleId }
|
||||
import core.report.{ ResolveReport, ConfigurationResolveReport, DownloadReport }
|
||||
import core.report.ResolveReport
|
||||
import core.module.descriptor.{ DefaultModuleDescriptor, ModuleDescriptor, DefaultDependencyDescriptor, DependencyDescriptor, Configuration => IvyConfiguration, ExcludeRule, IncludeRule }
|
||||
import core.module.descriptor.{ OverrideDependencyDescriptorMediator, DependencyArtifactDescriptor, DefaultDependencyArtifactDescriptor }
|
||||
import core.{ IvyPatternHelper, LogOptions }
|
||||
import core.module.descriptor.{ OverrideDependencyDescriptorMediator, DependencyArtifactDescriptor }
|
||||
import core.IvyPatternHelper
|
||||
import org.apache.ivy.util.{ Message, MessageLogger }
|
||||
import org.apache.ivy.plugins.latest.{ ArtifactInfo => IvyArtifactInfo }
|
||||
import org.apache.ivy.plugins.matcher.{ MapMatcher, PatternMatcher }
|
||||
import annotation.tailrec
|
||||
import scala.concurrent.duration._
|
||||
import sbt.io.{ DirectoryFilter, Hash, IO, Path }
|
||||
import sbt.io.{ DirectoryFilter, Hash, IO }
|
||||
import sbt.util.Logger
|
||||
import sbt.librarymanagement._
|
||||
import Configurations.{ System => _, _ }
|
||||
import sbt.internal.librarymanagement.syntax._
|
||||
|
||||
private[sbt] object CachedResolutionResolveCache {
|
||||
|
|
@ -254,8 +252,6 @@ private[sbt] trait ArtificialModuleDescriptor { self: DefaultModuleDescriptor =>
|
|||
}
|
||||
|
||||
private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine {
|
||||
import CachedResolutionResolveCache._
|
||||
|
||||
private[sbt] def cachedResolutionResolveCache: CachedResolutionResolveCache
|
||||
private[sbt] def projectResolver: Option[ProjectResolver]
|
||||
private[sbt] def makeInstance: Ivy
|
||||
|
|
@ -313,7 +309,7 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine {
|
|||
def doWorkUsingIvy(md: ModuleDescriptor): Either[ResolveException, UpdateReport] =
|
||||
{
|
||||
val options1 = new ResolveOptions(options0)
|
||||
var rr = withIvy(log) { ivy =>
|
||||
val rr = withIvy(log) { ivy =>
|
||||
ivy.resolve(md, options1)
|
||||
}
|
||||
if (!rr.hasError || missingOk) Right(IvyRetrieve.updateReport(rr, cachedDescriptor))
|
||||
|
|
@ -718,7 +714,7 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine {
|
|||
val (surviving, evicted) = cache.getOrElseUpdateConflict(cf0, cf1, conflicts) { doResolveConflict }
|
||||
(surviving, evicted)
|
||||
} else {
|
||||
val (surviving, evicted, mgr) = doResolveConflict
|
||||
val (surviving, evicted, _) = doResolveConflict
|
||||
(surviving, evicted)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,17 +1,10 @@
|
|||
package sbt.internal.librarymanagement
|
||||
package ivyint
|
||||
|
||||
import java.io.File
|
||||
import java.net.URI
|
||||
import java.util.{ Collection, Collections => CS }
|
||||
import CS.singleton
|
||||
|
||||
import org.apache.ivy.{ core, plugins, util, Ivy }
|
||||
import org.apache.ivy.core
|
||||
import core.module.descriptor.{ DependencyArtifactDescriptor, DefaultDependencyArtifactDescriptor }
|
||||
import core.module.descriptor.{ DefaultDependencyDescriptor => DDD, DependencyDescriptor }
|
||||
import core.module.id.{ ArtifactId, ModuleId, ModuleRevisionId }
|
||||
import plugins.namespace.Namespace
|
||||
import util.extendable.ExtendableItem
|
||||
import core.module.descriptor.DependencyDescriptor
|
||||
import core.module.id.{ ArtifactId, ModuleRevisionId }
|
||||
|
||||
private[sbt] object MergeDescriptors {
|
||||
def mergeable(a: DependencyDescriptor, b: DependencyDescriptor): Boolean =
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ final case class Artifact(name: String, `type`: String, extension: String, class
|
|||
def extra(attributes: (String, String)*) = copy(extraAttributes = extraAttributes ++ ModuleID.checkE(attributes))
|
||||
}
|
||||
|
||||
import Configurations.{ config, Optional, Pom, Test }
|
||||
import Configurations.{ Optional, Pom, Test }
|
||||
|
||||
object Artifact {
|
||||
def apply(name: String): Artifact = Artifact(name, DefaultType, DefaultExtension, None, Nil, None)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package sbt.librarymanagement
|
||||
|
||||
import sbt.internal.librarymanagement.DependencyFilter._
|
||||
import sbt.util.{ Logger, Level }
|
||||
|
||||
/**
|
||||
|
|
@ -13,7 +12,6 @@ final case class ConflictWarning(label: String, level: Level.Value, failOnConfli
|
|||
object ConflictWarning {
|
||||
def disable: ConflictWarning = ConflictWarning("", Level.Debug, false)
|
||||
|
||||
private def org = (_: ModuleID).organization
|
||||
private[this] def idString(org: String, name: String) = s"$org:$name"
|
||||
|
||||
def default(label: String): ConflictWarning = ConflictWarning(label, Level.Error, true)
|
||||
|
|
|
|||
|
|
@ -3,11 +3,7 @@
|
|||
*/
|
||||
package sbt.librarymanagement
|
||||
|
||||
import java.io.File
|
||||
import java.net.{ URI, URL }
|
||||
import scala.xml.NodeSeq
|
||||
import org.apache.ivy.plugins.resolver.{ DependencyResolver, IBiblioResolver }
|
||||
import org.apache.ivy.util.url.CredentialsStore
|
||||
import java.net.URL
|
||||
import org.apache.ivy.core.module.descriptor
|
||||
import org.apache.ivy.util.filter.{ Filter => IvyFilter }
|
||||
import sbt.serialization._
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ package sbt.librarymanagement
|
|||
|
||||
import java.io.{ IOException, File }
|
||||
import java.net.URL
|
||||
import scala.xml.{ Text, NodeSeq, Elem, XML }
|
||||
import scala.xml.XML
|
||||
import org.apache.ivy.plugins.resolver.DependencyResolver
|
||||
import org.xml.sax.SAXParseException
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package sbt.librarymanagement
|
||||
|
||||
import java.io.File
|
||||
import org.apache.ivy.plugins.resolver.DependencyResolver
|
||||
import org.apache.ivy.core.settings.IvySettings
|
||||
import sbt.util.Logger
|
||||
|
|
@ -23,7 +22,7 @@ final class UpdateOptions private[sbt] (
|
|||
val consolidatedResolution: Boolean,
|
||||
// If set to true, use cached resolution.
|
||||
val cachedResolution: Boolean,
|
||||
// Extention point for an alternative resolver converter.
|
||||
// Extension point for an alternative resolver converter.
|
||||
val resolverConverter: UpdateOptions.ResolverConverter
|
||||
) {
|
||||
def withCircularDependencyLevel(circularDependencyLevel: CircularDependencyLevel): UpdateOptions =
|
||||
|
|
|
|||
|
|
@ -4,10 +4,8 @@
|
|||
package sbt.librarymanagement
|
||||
|
||||
import java.io.File
|
||||
import java.net.URL
|
||||
import java.{ util => ju }
|
||||
import sbt.serialization._
|
||||
import sbt.internal.librarymanagement.{ DependencyFilter, ConfigurationFilter, ModuleFilter, ArtifactFilter }
|
||||
|
||||
/**
|
||||
* Provides information about resolution of a single configuration.
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ import sbt._
|
|||
import Keys._
|
||||
|
||||
object Dependencies {
|
||||
lazy val scala210 = "2.10.6"
|
||||
lazy val scala211 = "2.11.8"
|
||||
|
||||
val ioVersion = "1.0.0-M6"
|
||||
|
|
|
|||
|
|
@ -1,36 +0,0 @@
|
|||
lazy val check = taskKey[Unit]("Runs the check")
|
||||
|
||||
def commonSettings: Seq[Def.Setting[_]] =
|
||||
Seq(
|
||||
ivyPaths := new IvyPaths( (baseDirectory in ThisBuild).value, Some((target in LocalRootProject).value / "ivy-cache")),
|
||||
scalaVersion in ThisBuild := "2.11.7",
|
||||
organization in ThisBuild := "com.example",
|
||||
version in ThisBuild := "0.1.0-SNAPSHOT",
|
||||
autoScalaLibrary := false,
|
||||
crossPaths := false
|
||||
)
|
||||
|
||||
lazy val realCommonsIoClient = project.
|
||||
settings(
|
||||
commonSettings,
|
||||
name := "a",
|
||||
libraryDependencies := Seq(
|
||||
"commons-io" % "commons-io" % "1.3"
|
||||
),
|
||||
fullResolvers := fullResolvers.value.filterNot(_.name == "inter-project")
|
||||
)
|
||||
|
||||
lazy val fakeCommonsIo = project.
|
||||
settings(
|
||||
commonSettings,
|
||||
organization := "commons-io",
|
||||
name := "commons-io",
|
||||
version := "1.3"
|
||||
)
|
||||
|
||||
lazy val fakeCommonsIoClient = project.
|
||||
dependsOn(fakeCommonsIo % "test->test").
|
||||
settings(
|
||||
commonSettings,
|
||||
name := "c"
|
||||
)
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
> realCommonsIoClient/update
|
||||
|
||||
> fakeCommonsIoClient/update
|
||||
Loading…
Reference in New Issue