mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-25 16:07:12 -07:00
GH-414: Authenticated repos not working.
Fixes https://github.com/cbeust/kobalt/issues/414
This commit is contained in:
parent
1fb984ff63
commit
85460422e0
3 changed files with 46 additions and 25 deletions
|
@ -5,6 +5,7 @@ import com.beust.kobalt.HostConfig
|
||||||
import com.beust.kobalt.Plugins
|
import com.beust.kobalt.Plugins
|
||||||
import com.beust.kobalt.internal.PluginInfo
|
import com.beust.kobalt.internal.PluginInfo
|
||||||
import com.beust.kobalt.maven.DependencyManager
|
import com.beust.kobalt.maven.DependencyManager
|
||||||
|
import com.beust.kobalt.maven.aether.KobaltMavenResolver
|
||||||
import com.google.inject.Guice
|
import com.google.inject.Guice
|
||||||
import com.google.inject.Injector
|
import com.google.inject.Injector
|
||||||
import com.google.inject.Module
|
import com.google.inject.Module
|
||||||
|
@ -55,6 +56,9 @@ class Kobalt {
|
||||||
// Repos from the build file
|
// Repos from the build file
|
||||||
result.addAll(reposFromBuildFiles)
|
result.addAll(reposFromBuildFiles)
|
||||||
|
|
||||||
|
result.forEach {
|
||||||
|
KobaltMavenResolver.initAuthentication(it)
|
||||||
|
}
|
||||||
return result.toHashSet()
|
return result.toHashSet()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
package com.beust.kobalt.maven
|
package com.beust.kobalt.maven
|
||||||
|
|
||||||
import com.beust.kobalt.HostConfig
|
import com.beust.kobalt.HostConfig
|
||||||
import com.beust.kobalt.KobaltException
|
import com.beust.kobalt.maven.aether.KobaltMavenResolver
|
||||||
import com.beust.kobalt.maven.dependency.FileDependency
|
import com.beust.kobalt.maven.dependency.FileDependency
|
||||||
import com.beust.kobalt.misc.LocalProperties
|
|
||||||
import java.io.*
|
import java.io.*
|
||||||
import java.net.HttpURLConnection
|
import java.net.HttpURLConnection
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
|
@ -21,27 +20,7 @@ class Kurl(val hostInfo: HostConfig) {
|
||||||
}
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
// See if the URL needs to be authenticated. Look in local.properties for keys
|
KobaltMavenResolver.initAuthentication(hostInfo)
|
||||||
// of the format authUrl.<host>.user=xxx and authUrl.<host>.password=xxx
|
|
||||||
val properties = LocalProperties().localProperties
|
|
||||||
val host = java.net.URL(hostInfo.url).host
|
|
||||||
properties.entries.forEach {
|
|
||||||
val key = it.key.toString()
|
|
||||||
if (key == "$KEY.$host.$VALUE_USER") {
|
|
||||||
hostInfo.username = properties.getProperty(key)
|
|
||||||
} else if (key == "$KEY.$host.$VALUE_PASSWORD") {
|
|
||||||
hostInfo.password = properties.getProperty(key)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fun error(s1: String, s2: String) {
|
|
||||||
throw KobaltException("Found \"$s1\" but not \"$s2\" in local.properties for $KEY.$host",
|
|
||||||
docUrl = "http://beust.com/kobalt/documentation/index.html#maven-repos-authenticated")
|
|
||||||
}
|
|
||||||
if (! hostInfo.username.isNullOrBlank() && hostInfo.password.isNullOrBlank()) {
|
|
||||||
error("username", "password")
|
|
||||||
} else if(hostInfo.username.isNullOrBlank() && ! hostInfo.password.isNullOrBlank()) {
|
|
||||||
error("password", "username")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun toString() = hostInfo.toString()
|
override fun toString() = hostInfo.toString()
|
||||||
|
|
|
@ -2,11 +2,14 @@ package com.beust.kobalt.maven.aether
|
||||||
|
|
||||||
import com.beust.kobalt.Args
|
import com.beust.kobalt.Args
|
||||||
import com.beust.kobalt.HostConfig
|
import com.beust.kobalt.HostConfig
|
||||||
|
import com.beust.kobalt.KobaltException
|
||||||
import com.beust.kobalt.api.Kobalt
|
import com.beust.kobalt.api.Kobalt
|
||||||
import com.beust.kobalt.internal.KobaltSettings
|
import com.beust.kobalt.internal.KobaltSettings
|
||||||
import com.beust.kobalt.internal.getProxy
|
import com.beust.kobalt.internal.getProxy
|
||||||
|
import com.beust.kobalt.maven.Kurl
|
||||||
import com.beust.kobalt.maven.LocalRepo
|
import com.beust.kobalt.maven.LocalRepo
|
||||||
import com.beust.kobalt.maven.MavenId
|
import com.beust.kobalt.maven.MavenId
|
||||||
|
import com.beust.kobalt.misc.LocalProperties
|
||||||
import com.google.common.eventbus.EventBus
|
import com.google.common.eventbus.EventBus
|
||||||
import com.google.inject.Inject
|
import com.google.inject.Inject
|
||||||
import org.eclipse.aether.artifact.Artifact
|
import org.eclipse.aether.artifact.Artifact
|
||||||
|
@ -21,6 +24,7 @@ import org.eclipse.aether.resolution.DependencyRequest
|
||||||
import org.eclipse.aether.resolution.DependencyResult
|
import org.eclipse.aether.resolution.DependencyResult
|
||||||
import org.eclipse.aether.resolution.VersionRangeRequest
|
import org.eclipse.aether.resolution.VersionRangeRequest
|
||||||
import org.eclipse.aether.resolution.VersionRangeResult
|
import org.eclipse.aether.resolution.VersionRangeResult
|
||||||
|
import org.eclipse.aether.util.repository.AuthenticationBuilder
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class KobaltMavenResolver @Inject constructor(val settings: KobaltSettings,
|
class KobaltMavenResolver @Inject constructor(val settings: KobaltSettings,
|
||||||
|
@ -32,6 +36,31 @@ class KobaltMavenResolver @Inject constructor(val settings: KobaltSettings,
|
||||||
MavenId.toId(it.groupId, it.artifactId, it.extension, it.classifier, it.version)
|
MavenId.toId(it.groupId, it.artifactId, it.extension, it.classifier, it.version)
|
||||||
}
|
}
|
||||||
fun isRangeVersion(id: String) = id.contains(",")
|
fun isRangeVersion(id: String) = id.contains(",")
|
||||||
|
|
||||||
|
fun initAuthentication(hostInfo: HostConfig) {
|
||||||
|
// See if the URL needs to be authenticated. Look in local.properties for keys
|
||||||
|
// of the format authUrl.<host>.user=xxx and authUrl.<host>.password=xxx
|
||||||
|
val properties = LocalProperties().localProperties
|
||||||
|
val host = java.net.URL(hostInfo.url).host
|
||||||
|
properties.entries.forEach {
|
||||||
|
val key = it.key.toString()
|
||||||
|
if (key == "${Kurl.KEY}.$host.${Kurl.VALUE_USER}") {
|
||||||
|
hostInfo.username = properties.getProperty(key)
|
||||||
|
} else if (key == "${Kurl.KEY}.$host.${Kurl.VALUE_PASSWORD}") {
|
||||||
|
hostInfo.password = properties.getProperty(key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fun error(s1: String, s2: String) {
|
||||||
|
throw KobaltException("Found \"$s1\" but not \"$s2\" in local.properties for ${Kurl.KEY}.$host",
|
||||||
|
docUrl = "http://beust.com/kobalt/documentation/index.html#maven-repos-authenticated")
|
||||||
|
}
|
||||||
|
if (! hostInfo.username.isNullOrBlank() && hostInfo.password.isNullOrBlank()) {
|
||||||
|
error("username", "password")
|
||||||
|
} else if(hostInfo.username.isNullOrBlank() && ! hostInfo.password.isNullOrBlank()) {
|
||||||
|
error("password", "username")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun resolveToArtifact(id: String, scope: Scope? = null,
|
fun resolveToArtifact(id: String, scope: Scope? = null,
|
||||||
|
@ -110,8 +139,17 @@ class KobaltMavenResolver @Inject constructor(val settings: KobaltSettings,
|
||||||
private val system = Booter.newRepositorySystem()
|
private val system = Booter.newRepositorySystem()
|
||||||
private val session = Booter.newRepositorySystemSession(system, localRepo.localRepo, settings, eventBus)
|
private val session = Booter.newRepositorySystemSession(system, localRepo.localRepo, settings, eventBus)
|
||||||
|
|
||||||
private fun createRepo(hostConfig: HostConfig) =
|
private fun createRepo(hostConfig: HostConfig) : RemoteRepository {
|
||||||
RemoteRepository.Builder(hostConfig.name, "default", hostConfig.url).build()
|
val builder = RemoteRepository.Builder(hostConfig.name, "default", hostConfig.url)
|
||||||
|
if (hostConfig.hasAuth()) {
|
||||||
|
val auth = AuthenticationBuilder()
|
||||||
|
.addUsername(hostConfig.username)
|
||||||
|
.addPassword(hostConfig.password)
|
||||||
|
.build()
|
||||||
|
builder.setAuthentication(auth)
|
||||||
|
}
|
||||||
|
return builder.build()
|
||||||
|
}
|
||||||
|
|
||||||
private val kobaltRepositories: List<RemoteRepository>
|
private val kobaltRepositories: List<RemoteRepository>
|
||||||
get() = Kobalt.repos.map {
|
get() = Kobalt.repos.map {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue