diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IDependencyManager.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IDependencyManager.kt index ea0917bb..aec3b3db 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IDependencyManager.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IDependencyManager.kt @@ -7,7 +7,7 @@ interface IDependencyManager { /** * Parse the id and return the correct IClasspathDependency */ - fun create(id: String): IClasspathDependency + fun create(id: String, project: Project? = null): IClasspathDependency /** * Create an IClasspathDependency from a Maven id. diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Project.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Project.kt index 278d2658..efd8e6e4 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Project.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Project.kt @@ -149,24 +149,24 @@ class Dependencies(val project: Project, * Add the dependencies to the given ArrayList and return a list of jar files corresponding to * these dependencies. */ - private fun addToDependencies(dependencies: ArrayList, dep: Array) - : List - = with(dep.map { DependencyManager.create(it)}) { + private fun addToDependencies(project: Project, dependencies: ArrayList, + dep: Array): List + = with(dep.map { DependencyManager.create(it, project)}) { dependencies.addAll(this) this.map { it.jarFile.get() } } @Directive - fun compile(vararg dep: String) = addToDependencies(dependencies, dep) + fun compile(vararg dep: String) = addToDependencies(project, dependencies, dep) @Directive - fun provided(vararg dep: String) = addToDependencies(providedDependencies, dep) + fun provided(vararg dep: String) = addToDependencies(project, providedDependencies, dep) @Directive - fun runtime(vararg dep: String) = addToDependencies(runtimeDependencies, dep) + fun runtime(vararg dep: String) = addToDependencies(project, runtimeDependencies, dep) @Directive - fun exclude(vararg dep: String) = addToDependencies(excludedDependencies, dep) + fun exclude(vararg dep: String) = addToDependencies(project, excludedDependencies, dep) } class Scm(val connection: String, val developerConnection: String, val url: String) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/DependencyManager.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/DependencyManager.kt index 4e0b7ee8..910a58d1 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/DependencyManager.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/DependencyManager.kt @@ -7,6 +7,7 @@ import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.KobaltExecutors import com.beust.kobalt.misc.log import com.google.common.collect.ArrayListMultimap +import java.io.File import java.util.* import javax.inject.Inject import javax.inject.Singleton @@ -16,16 +17,21 @@ class DependencyManager @Inject constructor(val executors: KobaltExecutors, val : IDependencyManager { companion object { - fun create(id: String) = - Kobalt.INJECTOR.getInstance(DependencyManager::class.java).create(id) + fun create(id: String, project: Project? = null) = + Kobalt.INJECTOR.getInstance(DependencyManager::class.java).create(id, project) } /** * Parse the id and return the correct IClasspathDependency */ - override fun create(id: String) : IClasspathDependency { + override fun create(id: String, project: Project?) : IClasspathDependency { if (id.startsWith(FileDependency.PREFIX_FILE)) { - return createFile(id.substring(FileDependency.PREFIX_FILE.length)) + val path = if (project?.directory != null) { + File(project!!.directory, id.substring(FileDependency.PREFIX_FILE.length)) + } else { + File(id.substring(FileDependency.PREFIX_FILE.length)) + } + return createFile(path.path) } else { return createMaven(id) }