mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-26 16:28:12 -07:00
Implement localMaven().
This commit is contained in:
parent
b988e2de23
commit
ef516cd919
4 changed files with 53 additions and 5 deletions
|
@ -3,6 +3,7 @@ package com.beust.kobalt
|
||||||
import com.beust.kobalt.api.IClasspathDependency
|
import com.beust.kobalt.api.IClasspathDependency
|
||||||
import com.beust.kobalt.api.Kobalt
|
import com.beust.kobalt.api.Kobalt
|
||||||
import com.beust.kobalt.api.annotation.Directive
|
import com.beust.kobalt.api.annotation.Directive
|
||||||
|
import com.beust.kobalt.internal.KobaltSettings
|
||||||
import com.beust.kobalt.maven.DependencyManager
|
import com.beust.kobalt.maven.DependencyManager
|
||||||
import com.beust.kobalt.maven.dependency.FileDependency
|
import com.beust.kobalt.maven.dependency.FileDependency
|
||||||
import org.eclipse.aether.repository.Proxy
|
import org.eclipse.aether.repository.Proxy
|
||||||
|
@ -72,3 +73,6 @@ fun authRepo(init: HostConfig.() -> Unit) = HostConfig().apply { init() }
|
||||||
|
|
||||||
@Directive
|
@Directive
|
||||||
fun glob(g: String) : IFileSpec.GlobSpec = IFileSpec.GlobSpec(g)
|
fun glob(g: String) : IFileSpec.GlobSpec = IFileSpec.GlobSpec(g)
|
||||||
|
|
||||||
|
@Directive
|
||||||
|
fun localMaven() = file(Kobalt.INJECTOR.getInstance(KobaltSettings::class.java).localMavenRepo.path)
|
||||||
|
|
|
@ -92,7 +92,7 @@ open class JvmCompilerPlugin @Inject constructor(
|
||||||
return testContributor.run(project, context, configName,
|
return testContributor.run(project, context, configName,
|
||||||
dependencyManager.testDependencies(project, context))
|
dependencyManager.testDependencies(project, context))
|
||||||
} else {
|
} else {
|
||||||
log(1, "Couldn't find a test runner for project ${project.name}, did you specify a dependenciesTest{}?")
|
log(2, "Couldn't find a test runner for project ${project.name}, did you specify dependenciesTest{}?")
|
||||||
return TaskResult()
|
return TaskResult()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,9 @@ class KobaltSettingsXml {
|
||||||
@XmlElement(name = "local-repo") @JvmField
|
@XmlElement(name = "local-repo") @JvmField
|
||||||
var localRepo: String = homeDir(KFiles.KOBALT_DOT_DIR, "repository")
|
var localRepo: String = homeDir(KFiles.KOBALT_DOT_DIR, "repository")
|
||||||
|
|
||||||
|
@XmlElement(name = "local-maven-repo") @JvmField
|
||||||
|
var localMavenRepo: String = homeDir(KFiles.KOBALT_DOT_DIR, "localMavenRepo")
|
||||||
|
|
||||||
@XmlElement(name = "default-repos") @JvmField
|
@XmlElement(name = "default-repos") @JvmField
|
||||||
var defaultRepos: DefaultReposXml? = null
|
var defaultRepos: DefaultReposXml? = null
|
||||||
|
|
||||||
|
@ -65,10 +68,15 @@ fun List<ProxyConfig>.getProxy(protocol:String) = find { it.type==protocol }
|
||||||
@Singleton
|
@Singleton
|
||||||
class KobaltSettings @Inject constructor(val xmlFile: KobaltSettingsXml) {
|
class KobaltSettings @Inject constructor(val xmlFile: KobaltSettingsXml) {
|
||||||
/**
|
/**
|
||||||
* Location of the local repo.
|
* Location of the cache repository.
|
||||||
*/
|
*/
|
||||||
var localRepo = KFiles.makeDir(xmlFile.localRepo) // var for testing
|
var localRepo = KFiles.makeDir(xmlFile.localRepo) // var for testing
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Location of the local Maven repo for the task deployToLocalMaven
|
||||||
|
*/
|
||||||
|
val localMavenRepo = KFiles.makeDir(xmlFile.localMavenRepo)
|
||||||
|
|
||||||
val defaultRepos = xmlFile.defaultRepos?.repo
|
val defaultRepos = xmlFile.defaultRepos?.repo
|
||||||
|
|
||||||
val proxyConfigs = with(xmlFile.proxies?.proxy) {
|
val proxyConfigs = with(xmlFile.proxies?.proxy) {
|
||||||
|
|
|
@ -7,17 +7,21 @@ import com.beust.kobalt.api.Project
|
||||||
import com.beust.kobalt.api.annotation.Directive
|
import com.beust.kobalt.api.annotation.Directive
|
||||||
import com.beust.kobalt.api.annotation.Task
|
import com.beust.kobalt.api.annotation.Task
|
||||||
import com.beust.kobalt.internal.DocUrl
|
import com.beust.kobalt.internal.DocUrl
|
||||||
|
import com.beust.kobalt.internal.KobaltSettings
|
||||||
|
import com.beust.kobalt.maven.Md5
|
||||||
import com.beust.kobalt.maven.PomGenerator
|
import com.beust.kobalt.maven.PomGenerator
|
||||||
import com.beust.kobalt.misc.*
|
import com.beust.kobalt.misc.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import java.nio.file.Paths
|
||||||
|
import java.nio.file.StandardCopyOption
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
|
|
||||||
@Suppress("VARIABLE_WITH_REDUNDANT_INITIALIZER")
|
@Suppress("VARIABLE_WITH_REDUNDANT_INITIALIZER")
|
||||||
@Singleton
|
@Singleton
|
||||||
public class PublishPlugin @Inject constructor(val files: KFiles, val factory: PomGenerator.IFactory,
|
public class PublishPlugin @Inject constructor(val files: KFiles, val factory: PomGenerator.IFactory,
|
||||||
val bintrayFactory: BintrayApi.IFactory, val github: GithubApi2, val localProperties: LocalProperties)
|
val bintrayFactory: BintrayApi.IFactory, val github: GithubApi2, val localProperties: LocalProperties,
|
||||||
: BasePlugin() {
|
val settings: KobaltSettings) : BasePlugin() {
|
||||||
|
|
||||||
override val name = PLUGIN_NAME
|
override val name = PLUGIN_NAME
|
||||||
|
|
||||||
|
@ -46,7 +50,7 @@ public class PublishPlugin @Inject constructor(val files: KFiles, val factory: P
|
||||||
requireNotNull(project.artifactId, { "Project $project should have a artifactId" })
|
requireNotNull(project.artifactId, { "Project $project should have a artifactId" })
|
||||||
}
|
}
|
||||||
|
|
||||||
private val VALID = arrayListOf(".jar", ".pom")
|
private val VALID = listOf(".jar", ".pom")
|
||||||
|
|
||||||
private fun findArtifactFiles(project: Project) : List<File> {
|
private fun findArtifactFiles(project: Project) : List<File> {
|
||||||
val result = files.findRecursively(File(project.directory, project.buildDirectory)) { file ->
|
val result = files.findRecursively(File(project.directory, project.buildDirectory)) { file ->
|
||||||
|
@ -55,6 +59,38 @@ public class PublishPlugin @Inject constructor(val files: KFiles, val factory: P
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Task(name = "deployToMavenLocal", description = "Deploy the artifact to Maven local",
|
||||||
|
dependsOn = arrayOf(TASK_GENERATE_POM, "assemble"))
|
||||||
|
fun taskDeployToMavenLocal(project: Project): TaskResult {
|
||||||
|
validateProject(project)
|
||||||
|
return deployToMavenLocal(project)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun deployToMavenLocal(project: Project) : TaskResult {
|
||||||
|
val files = findArtifactFiles(project)
|
||||||
|
val allFiles = arrayListOf<File>()
|
||||||
|
// Calculate an MD5 checksum for each file
|
||||||
|
files.forEach {
|
||||||
|
allFiles.add(it)
|
||||||
|
Md5.toMd5(it).let { md5 ->
|
||||||
|
val md5File = File(it.path + ".md5")
|
||||||
|
md5File.writeText(md5)
|
||||||
|
allFiles.add(md5File)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
log(2, "Deploying to local maven " + settings.localMavenRepo)
|
||||||
|
val groupDir = project.group!!.replace('.', File.separatorChar)
|
||||||
|
val targetDir = KFiles.makeDir(KFiles.joinDir(settings.localMavenRepo.path, groupDir,
|
||||||
|
project.artifactId!!, project.version!!))
|
||||||
|
allFiles.forEach { file ->
|
||||||
|
log(1, " $file")
|
||||||
|
KFiles.copy(Paths.get(file.absolutePath), Paths.get(targetDir.path, file.name),
|
||||||
|
StandardCopyOption.REPLACE_EXISTING)
|
||||||
|
}
|
||||||
|
return TaskResult()
|
||||||
|
}
|
||||||
|
|
||||||
@Task(name = TASK_UPLOAD_BINTRAY, description = "Upload files to Bintray",
|
@Task(name = TASK_UPLOAD_BINTRAY, description = "Upload files to Bintray",
|
||||||
dependsOn = arrayOf(TASK_GENERATE_POM, "assemble"))
|
dependsOn = arrayOf(TASK_GENERATE_POM, "assemble"))
|
||||||
fun taskUploadBintray(project: Project): TaskResult {
|
fun taskUploadBintray(project: Project): TaskResult {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue