Rewrite plugin, use filenames in lockfile

This commit is contained in:
Tad Fisher
2024-05-17 14:52:02 -07:00
parent e83e42f9d4
commit 8d2ec45ad4
144 changed files with 8679 additions and 7507 deletions

View File

@@ -4,26 +4,28 @@ plugins {
application application
} }
configurations { configurations.register("share")
register("share")
}
dependencies { dependencies {
implementation(kotlin("reflect"))
implementation(project(":model")) implementation(project(":model"))
implementation(libs.clikt) implementation(libs.clikt)
implementation(libs.gradle.toolingApi) implementation(libs.gradle.toolingApi)
implementation(libs.kotlinx.coroutines.core)
implementation(libs.okio)
implementation(libs.serialization.json) implementation(libs.serialization.json)
implementation(libs.slf4j.api) implementation(libs.slf4j.api)
runtimeOnly(libs.slf4j.simple) runtimeOnly(libs.slf4j.simple)
implementation(libs.okio)
implementation(libs.xmlutil) implementation(libs.xmlutil)
"share"(project(":plugin", configuration = "shadow")) "share"(project(":plugin", configuration = "shadow")) {
isTransitive = false
}
testRuntimeOnly(kotlin("reflect")) //testRuntimeOnly(kotlin("reflect"))
testImplementation(libs.kotest.assertions) testImplementation(libs.kotest.assertions)
testImplementation(libs.kotest.runner) testImplementation(libs.kotest.runner)
testImplementation(libs.ktor.server.core)
testImplementation(libs.ktor.server.netty)
} }
application { application {
@@ -36,10 +38,6 @@ application {
.rename("plugin.*\\.jar", "plugin.jar") .rename("plugin.*\\.jar", "plugin.jar")
} }
kotlin {
jvmToolchain(11)
}
sourceSets { sourceSets {
test { test {
resources { resources {
@@ -80,7 +78,7 @@ tasks {
} }
systemProperties( systemProperties(
"org.nixos.gradle2nix.share" to installDist.get().destinationDir.resolve("share"), "org.nixos.gradle2nix.share" to installDist.get().destinationDir.resolve("share"),
"org.nixos.gradle2nix.m2" to rootDir.resolve("fixtures/repositories/m2").toURI().toString() "org.nixos.gradle2nix.m2" to "http://0.0.0.0:8989/m2"
) )
} }
useJUnitPlatform() useJUnitPlatform()

View File

@@ -1,53 +1,93 @@
package org.nixos.gradle2nix package org.nixos.gradle2nix
import java.io.File
import kotlin.coroutines.resume
import kotlin.coroutines.resumeWithException
import kotlin.io.path.absolutePathString
import kotlinx.coroutines.suspendCancellableCoroutine
import org.gradle.tooling.GradleConnectionException
import org.gradle.tooling.GradleConnector import org.gradle.tooling.GradleConnector
import org.gradle.tooling.ProjectConnection import org.gradle.tooling.ProjectConnection
import org.nixos.gradle2nix.model.PARAM_INCLUDE_CONFIGURATIONS import org.gradle.tooling.ResultHandler
import org.nixos.gradle2nix.model.PARAM_INCLUDE_PROJECTS import org.gradle.tooling.model.gradle.GradleBuild
import org.nixos.gradle2nix.model.DependencySet
import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK
fun connect(config: Config): ProjectConnection = fun connect(config: Config, projectDir: File = config.projectDir): ProjectConnection =
GradleConnector.newConnector() GradleConnector.newConnector()
.apply { .apply {
if (config.gradleVersion != null) { if (config.gradleVersion != null) {
useGradleVersion(config.gradleVersion) useGradleVersion(config.gradleVersion)
} }
} }
.forProjectDirectory(config.projectDir) .forProjectDirectory(projectDir)
.connect() .connect()
fun ProjectConnection.build( suspend fun ProjectConnection.buildModel(): GradleBuild = suspendCancellableCoroutine { continuation ->
config: Config, val cancellationTokenSource = GradleConnector.newCancellationTokenSource()
) {
newBuild() continuation.invokeOnCancellation { cancellationTokenSource.cancel() }
action { controller -> controller.buildModel }
.withCancellationToken(cancellationTokenSource.token())
.run(object : ResultHandler<GradleBuild> {
override fun onComplete(result: GradleBuild) {
continuation.resume(result)
}
override fun onFailure(failure: GradleConnectionException) {
continuation.resumeWithException(failure)
}
})
}
suspend fun ProjectConnection.build(config: Config): DependencySet = suspendCancellableCoroutine { continuation ->
val cancellationTokenSource = GradleConnector.newCancellationTokenSource()
continuation.invokeOnCancellation { cancellationTokenSource.cancel() }
action { controller -> controller.getModel(DependencySet::class.java) }
.withCancellationToken(cancellationTokenSource.token())
.apply { .apply {
if (config.tasks.isNotEmpty()) { if (config.tasks.isNotEmpty()) {
forTasks(*config.tasks.toTypedArray()) forTasks(*config.tasks.toTypedArray())
} else { } else {
forTasks(RESOLVE_ALL_TASK) forTasks(RESOLVE_ALL_TASK)
} }
if (config.gradleJdk != null) { }
setJavaHome(config.gradleJdk) .setJavaHome(config.gradleJdk)
} .addArguments(config.gradleArgs)
addArguments(config.gradleArgs) .addArguments(
addArguments( "--no-parallel",
"--gradle-user-home=${config.gradleHome}", "--refresh-dependencies",
"--init-script=${config.appHome}/init.gradle", "--gradle-user-home=${config.gradleHome}",
"--write-verification-metadata", "sha256" "--init-script=${config.appHome}/init.gradle",
) "--write-verification-metadata", "sha256"
if (config.projectFilter != null) { )
addArguments("-D$PARAM_INCLUDE_PROJECTS") .apply {
}
if (config.configurationFilter != null) {
addArguments("-D$PARAM_INCLUDE_CONFIGURATIONS")
}
if (config.logger.verbose) {
setStandardOutput(System.err)
setStandardError(System.err)
}
if (config.logger.stacktrace) { if (config.logger.stacktrace) {
addArguments("--stacktrace") addArguments("--stacktrace")
} }
if (config.logger.logLevel <= LogLevel.debug) {
setStandardOutput(System.err)
setStandardError(System.err)
}
if (config.dumpEvents) {
withSystemProperties(
mapOf(
"org.gradle.internal.operations.trace" to
config.outDir.toPath().resolve("debug").absolutePathString()
)
)
}
} }
.run() .run(object : ResultHandler<DependencySet> {
override fun onComplete(result: DependencySet) {
continuation.resume(result)
}
override fun onFailure(failure: GradleConnectionException) {
continuation.resumeWithException(failure)
}
})
} }

View File

@@ -5,43 +5,44 @@ import kotlin.system.exitProcess
class Logger( class Logger(
val out: PrintStream = System.err, val out: PrintStream = System.err,
val verbose: Boolean, val logLevel: LogLevel = LogLevel.warn,
val stacktrace: Boolean = false val stacktrace: Boolean = false,
) { ) {
fun debug(message: String, error: Throwable? = null) { fun debug(message: String, error: Throwable? = null) {
if (!stacktrace) return if (logLevel <= LogLevel.debug) {
out.println(message) out.println("[DEBUG] $message")
if (error == null) return printError(error)
error.message?.let { println(" Cause: $it") } }
error.printStackTrace(out)
} }
fun log(message: String, error: Throwable? = null) { fun info(message: String, error: Throwable? = null) {
if (!verbose) return if (logLevel <= LogLevel.info) {
out.println(message) out.println("[INFO] $message")
if (error == null) return printError(error)
error.message?.let { println(" Cause: $it") } }
if (stacktrace) error.printStackTrace(out)
} }
fun warn(message: String, error: Throwable? = null) { fun warn(message: String, error: Throwable? = null) {
out.println("Warning: $message") if (logLevel <= LogLevel.warn) {
out.println("[WARN] $message")
printError(error)
}
}
fun error(message: String, error: Throwable? = null): Nothing {
out.println("[ERROR] $message")
printError(error)
exitProcess(1)
}
private fun printError(error: Throwable?) {
if (error == null) return if (error == null) return
error.message?.let { println(" Cause: $it") } error.message?.let { println(" Cause: $it") }
if (stacktrace) error.printStackTrace(out) if (stacktrace) error.printStackTrace(out)
} }
fun error(message: String, error: Throwable? = null): Nothing { operator fun component1() = ::info
out.println("Error: $message")
if (error != null) {
error.message?.let { println(" Cause: $it") }
if (stacktrace) error.printStackTrace(out)
}
exitProcess(1)
}
operator fun component1() = ::log
operator fun component2() = ::warn operator fun component2() = ::warn
operator fun component3() = ::error operator fun component3() = ::error
} }

View File

@@ -10,11 +10,16 @@ import com.github.ajalt.clikt.parameters.options.flag
import com.github.ajalt.clikt.parameters.options.multiple import com.github.ajalt.clikt.parameters.options.multiple
import com.github.ajalt.clikt.parameters.options.option import com.github.ajalt.clikt.parameters.options.option
import com.github.ajalt.clikt.parameters.options.validate import com.github.ajalt.clikt.parameters.options.validate
import com.github.ajalt.clikt.parameters.types.choice
import com.github.ajalt.clikt.parameters.types.enum
import com.github.ajalt.clikt.parameters.types.file import com.github.ajalt.clikt.parameters.types.file
import java.io.File import java.io.File
import kotlinx.coroutines.runBlocking
import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import kotlinx.serialization.json.encodeToStream import kotlinx.serialization.json.encodeToStream
import org.gradle.tooling.model.gradle.GradleBuild
import org.nixos.gradle2nix.model.DependencySet
data class Config( data class Config(
val appHome: File, val appHome: File,
@@ -22,11 +27,11 @@ data class Config(
val gradleVersion: String?, val gradleVersion: String?,
val gradleJdk: File?, val gradleJdk: File?,
val gradleArgs: List<String>, val gradleArgs: List<String>,
val projectFilter: String?, val outDir: File,
val configurationFilter: String?,
val projectDir: File, val projectDir: File,
val tasks: List<String>, val tasks: List<String>,
val logger: Logger, val logger: Logger,
val dumpEvents: Boolean
) )
@OptIn(ExperimentalSerializationApi::class) @OptIn(ExperimentalSerializationApi::class)
@@ -36,6 +41,13 @@ val JsonFormat = Json {
prettyPrintIndent = " " prettyPrintIndent = " "
} }
enum class LogLevel {
debug,
info,
warn,
error,
}
class Gradle2Nix : CliktCommand( class Gradle2Nix : CliktCommand(
name = "gradle2nix" name = "gradle2nix"
) { ) {
@@ -51,17 +63,6 @@ class Gradle2Nix : CliktCommand(
help = "JDK home directory to use for launching Gradle (default: ${System.getProperty("java.home")})" help = "JDK home directory to use for launching Gradle (default: ${System.getProperty("java.home")})"
).file(canBeFile = false, canBeDir = true) ).file(canBeFile = false, canBeDir = true)
private val projectFilter: String? by option(
"--projects", "-p",
metavar = "REGEX",
help = "Regex to filter Gradle projects (default: include all projects)"
)
private val configurationFilter: String? by option(
"--configurations", "-c",
metavar = "REGEX",
help = "Regex to filter Gradle configurations (default: include all configurations)")
val outDir: File? by option( val outDir: File? by option(
"--out-dir", "-o", "--out-dir", "-o",
metavar = "DIR", metavar = "DIR",
@@ -74,11 +75,12 @@ class Gradle2Nix : CliktCommand(
help = "Prefix for environment files (.json and .nix)") help = "Prefix for environment files (.json and .nix)")
.default("gradle-env") .default("gradle-env")
private val debug: Boolean by option("--debug", help = "Enable debug logging") private val logLevel: LogLevel by option(
.flag(default = false) "--log", "-l",
metavar = "LEVEL",
private val quiet: Boolean by option("--quiet", "-q", help = "Disable logging") help = "Print messages with priority of at least LEVEL")
.flag(default = false) .enum<LogLevel>()
.default(LogLevel.error)
private val projectDir: File by option( private val projectDir: File by option(
"--projectDir", "-d", "--projectDir", "-d",
@@ -99,6 +101,16 @@ class Gradle2Nix : CliktCommand(
help = "Gradle tasks to run" help = "Gradle tasks to run"
).multiple() ).multiple()
private val dumpEvents: Boolean by option(
"--dump-events",
help = "Dump Gradle event logs to the output directory",
).flag()
private val stacktrace: Boolean by option(
"--stacktrace",
help = "Print a stack trace on error"
).flag()
private val gradleArgs: List<String> by argument( private val gradleArgs: List<String> by argument(
name = "ARGS", name = "ARGS",
help = "Extra arguments to pass to Gradle" help = "Extra arguments to pass to Gradle"
@@ -118,7 +130,7 @@ class Gradle2Nix : CliktCommand(
} }
val gradleHome = val gradleHome =
System.getenv("GRADLE_USER_HOME")?.let(::File) ?: File("${System.getProperty("user.home")}/.gradle") System.getenv("GRADLE_USER_HOME")?.let(::File) ?: File("${System.getProperty("user.home")}/.gradle")
val logger = Logger(verbose = !quiet, stacktrace = debug) val logger = Logger(logLevel = logLevel, stacktrace = stacktrace)
val config = Config( val config = Config(
File(appHome), File(appHome),
@@ -126,11 +138,11 @@ class Gradle2Nix : CliktCommand(
gradleVersion, gradleVersion,
gradleJdk, gradleJdk,
gradleArgs, gradleArgs,
projectFilter, outDir ?: projectDir,
configurationFilter,
projectDir, projectDir,
tasks, tasks,
logger logger,
dumpEvents
) )
val metadata = File("$projectDir/gradle/verification-metadata.xml") val metadata = File("$projectDir/gradle/verification-metadata.xml")
@@ -146,19 +158,37 @@ class Gradle2Nix : CliktCommand(
} }
} }
val buildSrcs = connect(config).use { connection ->
val root = runBlocking { connection.buildModel() }
val builds: List<GradleBuild> = buildList {
add(root)
addAll(root.editableBuilds)
}
builds.mapNotNull { build ->
build.rootProject.projectDirectory.resolve("buildSrc").takeIf { it.exists() }
}
}
val dependencySets = mutableListOf<DependencySet>()
connect(config).use { connection -> connect(config).use { connection ->
connection.build(config) dependencySets.add(runBlocking { connection.build(config) })
}
for (buildSrc in buildSrcs) {
connect(config, buildSrc).use { connection ->
dependencySets.add(runBlocking { connection.build(config) })
}
} }
val env = try { val env = try {
processDependencies(config) processDependencies(config, dependencySets)
} catch (e: Throwable) { } catch (e: Throwable) {
logger.error("dependency parsing failed", e) logger.error("dependency parsing failed", e)
} }
val outDir = outDir ?: projectDir val json = config.outDir.resolve("$envFile.json")
val json = outDir.resolve("$envFile.json") logger.info("Writing environment to $json")
logger.log("Writing environment to $json")
json.outputStream().buffered().use { output -> json.outputStream().buffered().use { output ->
JsonFormat.encodeToStream(env, output) JsonFormat.encodeToStream(env, output)
} }

View File

@@ -4,23 +4,13 @@ import org.nixos.gradle2nix.metadata.Artifact as ArtifactMetadata
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
import java.net.URI import java.net.URI
import java.net.URL
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.SerializationException
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.decodeFromStream
import okio.ByteString.Companion.decodeHex import okio.ByteString.Companion.decodeHex
import okio.HashingSource import okio.HashingSource
import okio.blackholeSink import okio.blackholeSink
import okio.buffer import okio.buffer
import okio.source import okio.source
import org.nixos.gradle2nix.model.Repository import org.nixos.gradle2nix.env.Artifact
import org.nixos.gradle2nix.model.ResolvedConfiguration
import org.nixos.gradle2nix.env.ArtifactFile
import org.nixos.gradle2nix.env.ArtifactSet
import org.nixos.gradle2nix.env.Env import org.nixos.gradle2nix.env.Env
import org.nixos.gradle2nix.env.Module
import org.nixos.gradle2nix.env.ModuleId
import org.nixos.gradle2nix.metadata.Checksum import org.nixos.gradle2nix.metadata.Checksum
import org.nixos.gradle2nix.metadata.Component import org.nixos.gradle2nix.metadata.Component
import org.nixos.gradle2nix.metadata.Md5 import org.nixos.gradle2nix.metadata.Md5
@@ -30,239 +20,100 @@ import org.nixos.gradle2nix.metadata.Sha512
import org.nixos.gradle2nix.metadata.VerificationMetadata import org.nixos.gradle2nix.metadata.VerificationMetadata
import org.nixos.gradle2nix.metadata.parseVerificationMetadata import org.nixos.gradle2nix.metadata.parseVerificationMetadata
import org.nixos.gradle2nix.model.DependencyCoordinates import org.nixos.gradle2nix.model.DependencyCoordinates
import org.nixos.gradle2nix.model.Version import org.nixos.gradle2nix.model.DependencySet
import org.nixos.gradle2nix.module.GradleModule
import org.nixos.gradle2nix.module.Variant
// Local Maven repository for testing fun processDependencies(
private val m2 = System.getProperty("org.nixos.gradle2nix.m2") config: Config,
dependencySets: Iterable<DependencySet>
private fun shouldSkipRepository(repository: Repository): Boolean { ): Env {
return repository.artifactResources.all { it.startsWith("file:") && (m2 == null || !it.startsWith(m2)) } ||
repository.metadataResources.all { it.startsWith("file:") && (m2 == null || !it.startsWith(m2)) }
}
fun processDependencies(config: Config): Env {
val verificationMetadata = readVerificationMetadata(config) val verificationMetadata = readVerificationMetadata(config)
val verificationComponents = verificationMetadata?.components?.associateBy { it.id } ?: emptyMap() val verificationComponents = verificationMetadata?.components?.associateBy { it.id.id } ?: emptyMap()
val moduleCache = mutableMapOf<DependencyCoordinates, GradleModule?>()
val pomCache = mutableMapOf<DependencyCoordinates, Pair<String, ArtifactFile>?>()
val ivyCache = mutableMapOf<DependencyCoordinates, Pair<String, ArtifactFile>?>()
val configurations = readDependencyGraph(config)
val repositories = configurations return buildMap<DependencyCoordinates, Map<String, Artifact>> {
.flatMap { it.repositories } for (dependencySet in dependencySets) {
.associateBy { it.id } val env = dependencySet.toEnv(config, verificationComponents)
.filterNot { (id, repo) ->
if (shouldSkipRepository(repo)) { for ((id, artifacts) in env) {
config.logger.warn("$id: all URLs are files; skipping") merge(id, artifacts) { a, b ->
true buildMap {
} else { putAll(a)
false for ((name, artifact) in b) {
merge(name, artifact) { aa, ba ->
check(aa.hash == ba.hash) {
config.logger.error("""
Conflicting hashes found for $id:$name:
1: ${aa.hash}
2: ${ba.hash}
""".trimIndent())
}
Artifact(
(aa.urls + ba.urls).distinct().sorted(),
aa.hash
)
}
}
}
}
} }
} }
if (repositories.isEmpty()) { }.mapValues { (_, artifacts) ->
config.logger.warn("no repositories found in any configuration") artifacts.toSortedMap()
return emptyMap() }.toSortedMap(coordinatesComparator)
.mapKeys { (coordinates, _) -> coordinates.id }
}
private fun DependencySet.toEnv(config: Config, verificationComponents: Map<String, Component>): Map<DependencyCoordinates, Map<String, Artifact>> {
return dependencies.associate { dep ->
val component = verificationComponents[dep.coordinates.id]
?: verifyComponentFilesInCache(config, dep.coordinates)
?: config.logger.error("${dep.coordinates}: no dependency metadata found")
dep.coordinates to dep.artifacts.mapNotNull { resolvedArtifact ->
val artifact = component.artifacts.find { it.name == resolvedArtifact.name }
?.let { Artifact(resolvedArtifact.urls.sorted(), it.checksums.first().toSri()) }
?: downloadArtifact(resolvedArtifact.urls.sorted())
artifact?.let { resolvedArtifact.filename to it }
}.sortedBy { it.first }.toMap()
} }
config.logger.debug("Repositories:\n ${repositories.values.joinToString("\n ")}")
return configurations.asSequence()
.flatMap { it.allDependencies.asSequence() }
.filterNot { it.repository == null || it.repository !in repositories }
.groupBy { ModuleId(it.id.group, it.id.module) }
.mapValues { (_, deps) ->
val byVersion = deps.groupBy { it.id }
.mapValues { (componentId, deps) ->
val dep = MergedDependency(
id = componentId,
repositories = deps.mapNotNull { repositories[it.repository] }.distinct()
)
val component = verificationComponents[componentId]
?: verifyComponentFilesInCache(config, componentId)
?: verifyComponentFilesInTestRepository(config, componentId)
?: config.logger.error("$componentId: no dependency metadata found")
val gradleModule = moduleCache.getOrPut(componentId) {
maybeDownloadGradleModule(config.logger, component, dep.repositories)?.artifact?.second
}
val pomArtifact = pomCache.getOrPut(componentId) {
maybeDownloadMavenPom(config.logger, component, dep.repositories, gradleModule)
}
val ivyArtifact = ivyCache.getOrPut(componentId) {
maybeDownloadIvyDescriptor(config.logger, component, dep.repositories)
}
val files = buildMap {
if (pomArtifact != null) put(pomArtifact.first, pomArtifact.second)
if (ivyArtifact != null) put(ivyArtifact.first, ivyArtifact.second)
for (artifact in component.artifacts) {
put(
artifact.name,
ArtifactFile(
urls = dep.repositories.flatMap { repo ->
artifactUrls(config.logger, componentId, artifact.name, repo, gradleModule)
}.distinct(),
hash = artifact.checksums.first().toSri()
)
)
}
}.toSortedMap()
ArtifactSet(files)
}
.mapKeys { Version(it.key.version) }
.toSortedMap(Version.Comparator.reversed())
Module(byVersion)
}
.toSortedMap(compareBy(ModuleId::toString))
} }
private fun readVerificationMetadata(config: Config): VerificationMetadata? { private fun readVerificationMetadata(config: Config): VerificationMetadata? {
return parseVerificationMetadata(config.logger, config.projectDir.resolve("gradle/verification-metadata.xml")) return parseVerificationMetadata(config.logger, config.projectDir.resolve("gradle/verification-metadata.xml"))
} }
@OptIn(ExperimentalSerializationApi::class)
private fun readDependencyGraph(config: Config): List<ResolvedConfiguration> {
return config.projectDir.resolve("build/reports/nix-dependency-graph/dependency-graph.json")
.inputStream()
.buffered()
.use { input -> Json.decodeFromStream(input) }
}
private fun verifyComponentFilesInCache( private fun verifyComponentFilesInCache(
config: Config, config: Config,
id: DependencyCoordinates, id: DependencyCoordinates,
): Component? { ): Component? {
val cacheDir = with(id) { config.gradleHome.resolve("caches/modules-2/files-2.1/$group/$module/$version") } val cacheDir = with(id) { config.gradleHome.resolve("caches/modules-2/files-2.1/$group/$artifact/$version") }
if (!cacheDir.exists()) { if (!cacheDir.exists()) {
return null return null
} }
val verifications = cacheDir.walk().filter { it.isFile }.map { f -> val verifications = cacheDir.walk().filter { it.isFile }.map { f ->
ArtifactMetadata(f.name, sha256 = Sha256(f.sha256())) ArtifactMetadata(f.name.replaceFirst(id.version, id.timestampedVersion), sha256 = Sha256(f.sha256()))
} }
config.logger.log("$id: obtained artifact hashes from Gradle cache.") config.logger.info("${id.id}: obtained artifact hashes from Gradle cache.")
return Component(id, verifications.toList()) return Component(id, verifications.toList())
} }
private fun verifyComponentFilesInTestRepository( private fun downloadArtifact(
config: Config, urls: List<String>
id: DependencyCoordinates ): Artifact? {
): Component? { return maybeDownloadText(urls)?.let {
if (m2 == null) return null Artifact(
val dir = with(id) { urls,
File(URI.create(m2)).resolve("${group.replace(".", "/")}/$module/$version") it.hash.toSri()
}
if (!dir.exists()) {
config.logger.log("$id: not found in m2 repository; tried $dir")
return null
}
val verifications = dir.walk().filter { it.isFile && it.name.startsWith(id.module) }.map { f ->
ArtifactMetadata(
f.name,
sha256 = Sha256(f.sha256())
)
}
config.logger.log("$id: obtained artifact hashes from test Maven repository.")
return Component(id, verifications.toList())
}
private fun maybeDownloadGradleModule(
logger: Logger,
component: Component,
repos: List<Repository>
): ArtifactDownload<Pair<String, GradleModule>>? {
if (component.artifacts.none { it.name.endsWith(".module") }) return null
val filename = with(component.id) { "$module-$version.module" }
return maybeDownloadArtifact(logger, component.id, filename, repos)?.let { artifact ->
try {
ArtifactDownload(
filename to JsonFormat.decodeFromString<GradleModule>(artifact.artifact),
artifact.url,
artifact.hash
)
} catch (e: SerializationException) {
logger.warn("${component.id}: failed to parse Gradle module metadata from ${artifact.url}")
null
}
}
}
private fun maybeDownloadMavenPom(
logger: Logger,
component: Component,
repos: List<Repository>,
gradleModule: GradleModule?
): Pair<String, ArtifactFile>? {
if (component.artifacts.any { it.name.endsWith(".pom") }) return null
val pomRepos = repos.filter { "mavenPom" in it.metadataSources }
if (pomRepos.isEmpty()) return null
val filename = with(component.id) { "$module-$version.pom" }
return maybeDownloadArtifact(logger, component.id, filename, pomRepos)?.let { artifact ->
filename to ArtifactFile(
urls = pomRepos.flatMap { repo ->
artifactUrls(logger, component.id, filename, repo, gradleModule)
}.distinct(),
hash = artifact.hash.toSri()
) )
} }
} }
private fun maybeDownloadIvyDescriptor( private fun maybeDownloadText(
logger: Logger, urls: List<String>,
component: Component,
repos: List<Repository>,
): Pair<String, ArtifactFile>? {
val ivyRepos = repos.filter { "ivyDescriptor" in it.metadataSources }
if (ivyRepos.isEmpty()) return null
val urls = ivyRepos
.flatMap { repo ->
val attributes = attributes(component.id, repo)
repo.metadataResources.mapNotNull { fill(it, attributes).takeIf(::isUrlComplete) }
}
.filter { url ->
component.artifacts.none { url.substringAfterLast('/') == it.name }
}
var artifact: ArtifactDownload<String>? = null
for (url in urls) {
try {
val source = HashingSource.sha256(URL(url).openStream().source())
val text = source.buffer().readUtf8()
val hash = source.hash
artifact = ArtifactDownload(text, url, Sha256(hash.hex()))
break
} catch (e: IOException) {
// Pass
}
}
if (artifact == null) {
logger.debug("ivy descriptor not found in urls: $urls")
return null
}
return artifact.artifact to ArtifactFile(
urls = urls,
hash = artifact.hash.toSri()
)
}
private fun maybeDownloadArtifact(
logger: Logger,
id: DependencyCoordinates,
filename: String,
repos: List<Repository>
): ArtifactDownload<String>? { ): ArtifactDownload<String>? {
val urls = repos.flatMap { artifactUrls(logger, id, filename, it, null)}
logger.debug("artifact $filename: $urls")
for (url in urls) { for (url in urls) {
try { try {
val source = HashingSource.sha256(URL(url).openStream().source()) val source = HashingSource.sha256(URI(url).toURL().openStream().source())
val text = source.buffer().readUtf8() val text = source.buffer().readUtf8()
val hash = source.hash val hash = source.hash
return ArtifactDownload(text, url, Sha256(hash.hex())) return ArtifactDownload(text, url, Sha256(hash.hex()))
@@ -270,8 +121,6 @@ private fun maybeDownloadArtifact(
// Pass // Pass
} }
} }
logger.debug("artifact $filename not found in any repository")
return null return null
} }
@@ -281,7 +130,7 @@ private fun File.sha256(): String {
return source.hash.hex() return source.hash.hex()
} }
private fun Checksum.toSri(): String { internal fun Checksum.toSri(): String {
val hash = value.decodeHex().base64() val hash = value.decodeHex().base64()
return when (this) { return when (this) {
is Md5 -> "md5-$hash" is Md5 -> "md5-$hash"
@@ -291,96 +140,13 @@ private fun Checksum.toSri(): String {
} }
} }
private fun artifactUrls(
logger: Logger,
id: DependencyCoordinates,
filename: String,
repository: Repository,
module: GradleModule?,
): List<String> {
val groupAsPath = id.group.replace(".", "/")
val repoFilename = module?.let { m ->
m.variants
.asSequence()
.flatMap(Variant::files)
.find { it.name == filename }
}?.url ?: filename
val attributes = mutableMapOf(
"organisation" to if (repository.m2Compatible) groupAsPath else id.group,
"module" to id.module,
"revision" to id.version,
) + fileAttributes(repoFilename, id.version)
val resources = when (attributes["ext"]) {
"pom" -> if ("mavenPom" in repository.metadataSources) repository.metadataResources else repository.artifactResources
"xml" -> if ("ivyDescriptor" in repository.metadataSources) repository.metadataResources else repository.artifactResources
"module" -> if ("gradleMetadata" in repository.metadataSources || "ignoreGradleMetadataRedirection" !in repository.metadataSources) {
repository.metadataResources
} else {
repository.artifactResources
}
else -> repository.artifactResources
}.map { it.replaceFirst("-[revision]", "-${id.artifactVersion}") }
val urls = mutableListOf<String>()
for (resource in resources) {
val location = attributes.entries.fold(fill(resource, attributes)) { acc, (key, value) ->
acc.replace("[$key]", value)
}
if (location.none { it == '[' || it == ']' }) {
urls.add(location)
} else {
logger.warn("failed to construct artifact URL: $location")
}
}
return urls.distinct()
}
private val optionalRegex = Regex("\\(([^)]+)\\)")
private val attrRegex = Regex("\\[([^]]+)]")
private fun fill(template: String, attributes: Map<String, String>): String {
return optionalRegex.replace(template) { match ->
attrRegex.find(match.value)?.groupValues?.get(1)?.let { attr ->
attributes[attr]?.takeIf { it.isNotBlank() }?.let { value ->
match.groupValues[1].replace("[$attr]", value)
}
} ?: ""
}
}
private fun isUrlComplete(url: String): Boolean = !url.contains("[")
private fun attributes(id: DependencyCoordinates, repository: Repository): Map<String, String> = buildMap {
put("organisation", if (repository.m2Compatible) id.group.replace(".", "/") else id.group)
put("module", id.module)
put("revision", id.version)
}
// Gradle persists artifacts with the Maven artifact pattern, which may not match the repository's pattern.
private fun fileAttributes(file: String, version: String): Map<String, String> {
val parts = Regex("(.+)-$version(-([^.]+))?(\\.(.+))?").matchEntire(file) ?: return emptyMap()
val (artifact, _, classifier, _, ext) = parts.destructured
return buildMap {
put("artifact", artifact)
put("classifier", classifier)
put("ext", ext)
}
}
private data class MergedDependency(
val id: DependencyCoordinates,
val repositories: List<Repository>
)
private data class ArtifactDownload<T>( private data class ArtifactDownload<T>(
val artifact: T, val artifact: T,
val url: String, val url: String,
val hash: Checksum val hash: Checksum
) )
private val coordinatesComparator: Comparator<DependencyCoordinates> = compareBy<DependencyCoordinates> { it.group }
.thenBy { it.artifact }
.thenByDescending { Version(it.version) }
.thenByDescending { it.timestamp }

View File

@@ -1,16 +1,7 @@
package org.nixos.gradle2nix.model package org.nixos.gradle2nix
import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentHashMap
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializable
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
@Serializable(Version.Serializer::class)
class Version(val source: String, val parts: List<String>, base: Version?) : Comparable<Version> { class Version(val source: String, val parts: List<String>, base: Version?) : Comparable<Version> {
private val base: Version private val base: Version
@@ -35,26 +26,6 @@ class Version(val source: String, val parts: List<String>, base: Version?) : Com
override fun hashCode(): Int = source.hashCode() override fun hashCode(): Int = source.hashCode()
object Comparator : kotlin.Comparator<Version> {
override fun compare(o1: Version, o2: Version): Int =
Version.compare(o1, o2)
}
internal object Serializer : KSerializer<Version> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor(
Version::class.qualifiedName!!,
PrimitiveKind.STRING
)
override fun serialize(encoder: Encoder, value: Version) {
encoder.encodeString(value.source)
}
override fun deserialize(decoder: Decoder): Version {
return Version(decoder.decodeString())
}
}
companion object { companion object {
private val SPECIAL_MEANINGS: Map<String, Int> = mapOf( private val SPECIAL_MEANINGS: Map<String, Int> = mapOf(
"dev" to -1, "dev" to -1,

View File

@@ -1,68 +1,22 @@
package org.nixos.gradle2nix.env package org.nixos.gradle2nix.env
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.SerializationException
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import org.nixos.gradle2nix.model.Version
typealias Env = Map<ModuleId, Module> typealias Env = Map<String, Map<String, Artifact>>
@Serializable @Serializable
@JvmInline data class Artifact internal constructor(
value class Module(
val versions: Map<Version, ArtifactSet>,
)
@Serializable
@JvmInline
value class ArtifactSet(
val files: Map<String, ArtifactFile>
)
@Serializable
data class ArtifactFile internal constructor(
val urls: List<String>, val urls: List<String>,
val hash: String, val hash: String,
) { ) {
companion object { companion object {
operator fun invoke(urls: List<String>, hash: String) = ArtifactFile(urls.sorted(), hash) operator fun invoke(
} urls: List<String>,
} hash: String
) = Artifact(
@Serializable(ModuleId.Serializer::class) urls.sorted(),
data class ModuleId( hash
val group: String,
val name: String,
) : Comparable<ModuleId> {
override fun compareTo(other: ModuleId): Int =
compareValuesBy(this, other, ModuleId::group, ModuleId::name)
override fun toString(): String = "$group:$name"
companion object Serializer : KSerializer<ModuleId> {
override val descriptor: SerialDescriptor get() = PrimitiveSerialDescriptor(
ModuleId::class.qualifiedName!!,
PrimitiveKind.STRING
) )
override fun serialize(encoder: Encoder, value: ModuleId) {
encoder.encodeString(value.toString())
}
override fun deserialize(decoder: Decoder): ModuleId {
val encoded = decoder.decodeString()
val parts = encoded.split(":")
if (parts.size != 2 || parts.any(String::isBlank)) {
throw SerializationException("invalid module id: $encoded")
}
return ModuleId(parts[0], parts[1])
}
} }
} }

View File

@@ -1,4 +1,4 @@
package org.nixos.gradle2nix.module package org.nixos.gradle2nix.gradle
import kotlinx.serialization.SerialName import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable

View File

@@ -10,6 +10,7 @@ import nl.adaptivity.xmlutil.serialization.XmlSerialName
import nl.adaptivity.xmlutil.xmlStreaming import nl.adaptivity.xmlutil.xmlStreaming
import org.nixos.gradle2nix.Logger import org.nixos.gradle2nix.Logger
import org.nixos.gradle2nix.model.DependencyCoordinates import org.nixos.gradle2nix.model.DependencyCoordinates
import org.nixos.gradle2nix.model.impl.DefaultDependencyCoordinates
sealed interface Coordinates { sealed interface Coordinates {
val group: String? val group: String?
@@ -40,10 +41,10 @@ data class Configuration(
@Serializable @Serializable
sealed interface Checksum { sealed interface Checksum {
abstract val value: String val value: String
abstract val origin: String? val origin: String?
abstract val reason: String? val reason: String?
abstract val alternatives: List<String> val alternatives: List<String>
} }
@Serializable @Serializable
@@ -107,11 +108,11 @@ data class Component(
val timestamp: String? = null, val timestamp: String? = null,
val artifacts: List<Artifact> = emptyList(), val artifacts: List<Artifact> = emptyList(),
) { ) {
val id: DependencyCoordinates get() = DependencyCoordinates(group, name, version, timestamp) val id: DependencyCoordinates get() = DefaultDependencyCoordinates(group, name, version, timestamp)
constructor(id: DependencyCoordinates, artifacts: List<Artifact>) : this( constructor(id: DependencyCoordinates, artifacts: List<Artifact>) : this(
id.group, id.group,
id.module, id.artifact,
id.version, id.version,
id.timestamp, id.timestamp,
artifacts artifacts

View File

@@ -1,8 +1,11 @@
package org.nixos.gradle2nix package org.nixos.gradle2nix
import io.kotest.core.extensions.install
import io.kotest.core.spec.style.FunSpec import io.kotest.core.spec.style.FunSpec
class GoldenTest : FunSpec({ class GoldenTest : FunSpec({
install(MavenRepo)
context("basic") { context("basic") {
golden("basic/basic-java-project") golden("basic/basic-java-project")
golden("basic/basic-kotlin-project") golden("basic/basic-kotlin-project")

View File

@@ -1,20 +1,37 @@
package org.nixos.gradle2nix package org.nixos.gradle2nix
import io.kotest.assertions.fail import io.kotest.assertions.fail
import io.kotest.assertions.withClue
import io.kotest.common.ExperimentalKotest import io.kotest.common.ExperimentalKotest
import io.kotest.common.KotestInternal import io.kotest.common.KotestInternal
import io.kotest.core.extensions.MountableExtension
import io.kotest.core.listeners.AfterSpecListener
import io.kotest.core.names.TestName import io.kotest.core.names.TestName
import io.kotest.core.source.sourceRef import io.kotest.core.source.sourceRef
import io.kotest.core.spec.Spec
import io.kotest.core.test.NestedTest import io.kotest.core.test.NestedTest
import io.kotest.core.test.TestScope import io.kotest.core.test.TestScope
import io.kotest.core.test.TestType import io.kotest.core.test.TestType
import io.kotest.matchers.equals.beEqual import io.kotest.matchers.equals.beEqual
import io.kotest.matchers.file.shouldBeAFile import io.kotest.matchers.file.shouldBeAFile
import io.kotest.matchers.nulls.shouldNotBeNull
import io.kotest.matchers.should import io.kotest.matchers.should
import io.kotest.matchers.shouldBe
import io.ktor.http.ContentType
import io.ktor.http.Url
import io.ktor.server.engine.embeddedServer
import io.ktor.server.http.content.staticFiles
import io.ktor.server.netty.Netty
import io.ktor.server.netty.NettyApplicationEngine
import io.ktor.server.routing.routing
import java.io.File import java.io.File
import java.io.FileFilter import java.io.FileFilter
import java.nio.file.Files import java.nio.file.Files
import java.nio.file.Paths import java.nio.file.Paths
import kotlin.random.Random
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.SerializationException import kotlinx.serialization.SerializationException
import kotlinx.serialization.encodeToString import kotlinx.serialization.encodeToString
@@ -23,6 +40,7 @@ import kotlinx.serialization.json.decodeFromStream
import kotlinx.serialization.json.encodeToStream import kotlinx.serialization.json.encodeToStream
import okio.use import okio.use
import org.nixos.gradle2nix.env.Env import org.nixos.gradle2nix.env.Env
import org.nixos.gradle2nix.metadata.parseVerificationMetadata
private val app = Gradle2Nix() private val app = Gradle2Nix()
@@ -32,7 +50,7 @@ private val json = Json {
prettyPrintIndent = " " prettyPrintIndent = " "
} }
val testLogger = Logger(verbose = true, stacktrace = true) val testLogger = Logger(logLevel = LogLevel.debug, stacktrace = true)
fun fixture(path: String): File { fun fixture(path: String): File {
return Paths.get("../fixtures", path).toFile() return Paths.get("../fixtures", path).toFile()
@@ -42,10 +60,10 @@ fun fixture(path: String): File {
suspend fun TestScope.fixture( suspend fun TestScope.fixture(
project: String, project: String,
vararg args: String, vararg args: String,
test: suspend TestScope.(Env) -> Unit test: suspend TestScope.(File, Env) -> Unit
) { ) {
val tmp = Paths.get("build/tmp/gradle2nix").apply { toFile().mkdirs() } val tmp = Paths.get("build/tmp/gradle2nix").apply { toFile().mkdirs() }
val baseDir = Paths.get("../fixtures", project).toFile() val baseDir = Paths.get("../fixtures/projects", project).toFile()
val children = baseDir.listFiles(FileFilter { it.isDirectory && (it.name == "groovy" || it.name == "kotlin") }) val children = baseDir.listFiles(FileFilter { it.isDirectory && (it.name == "groovy" || it.name == "kotlin") })
?.toList() ?.toList()
val cases = if (children.isNullOrEmpty()) { val cases = if (children.isNullOrEmpty()) {
@@ -73,13 +91,22 @@ suspend fun TestScope.fixture(
if (!tempDir.resolve("settings.gradle").exists() && !tempDir.resolve("settings.gradle.kts").exists()) { if (!tempDir.resolve("settings.gradle").exists() && !tempDir.resolve("settings.gradle.kts").exists()) {
Files.createFile(tempDir.resolve("settings.gradle").toPath()) Files.createFile(tempDir.resolve("settings.gradle").toPath())
} }
app.main(listOf("-d", tempDir.toString()) + listOf("--debug") + args.withM2() + "-Dorg.gradle.internal.operations.trace=${tempDir.resolve("build").absolutePath}") app.main(
listOf(
"-d", tempDir.toString(),
"--log", "debug",
"--stacktrace",
"--dump-events",
"--",
"-Dorg.nixos.gradle2nix.m2=$m2"
) + args
)
val file = tempDir.resolve("${app.envFile}.json") val file = tempDir.resolve("${app.envFile}.json")
file.shouldBeAFile() file.shouldBeAFile()
val env: Env = file.inputStream().buffered().use { input -> val env: Env = file.inputStream().buffered().use { input ->
Json.decodeFromStream(input) Json.decodeFromStream(input)
} }
test(env) test(tempDir, env)
} }
) )
} }
@@ -92,7 +119,7 @@ suspend fun TestScope.golden(
project: String, project: String,
vararg args: String, vararg args: String,
) { ) {
fixture(project, *args) { env -> fixture(project, *args) { dir, env ->
val filename = "${testCase.name.testName}.json" val filename = "${testCase.name.testName}.json"
val goldenFile = File("../fixtures/golden/$filename") val goldenFile = File("../fixtures/golden/$filename")
if (updateGolden) { if (updateGolden) {
@@ -111,14 +138,83 @@ suspend fun TestScope.golden(
} }
json.encodeToString(env) should beEqual(goldenData) json.encodeToString(env) should beEqual(goldenData)
} }
val metadata = parseVerificationMetadata(
testLogger,
dir.resolve("gradle/verification-metadata.xml")
)!!
for (component in metadata.components) {
val componentId = component.id.id
withClue("env should contain component $componentId") {
env[componentId].shouldNotBeNull()
}
}
} }
} }
val m2 = System.getProperty("org.nixos.gradle2nix.m2") val m2: String = requireNotNull(System.getProperty("org.nixos.gradle2nix.m2"))
private fun Array<out String>.withM2(): List<String> { object MavenRepo : MountableExtension<MavenRepo.Config, NettyApplicationEngine>, AfterSpecListener {
val args = toMutableList() class Config {
if (args.indexOf("--") < 0) args.add("--") var repository: File = File("../fixtures/repositories/m2")
args.add("-Dorg.nixos.gradle2nix.m2=$m2") var path: String = ""
return args var port: Int? = null
var host: String = DEFAULT_HOST
}
const val DEFAULT_HOST = "0.0.0.0"
private val coroutineScope = CoroutineScope(Dispatchers.Default)
private var server: NettyApplicationEngine? = null
private val config = Config()
init {
require(config.repository.exists()) {
"test repository doesn't exist: ${config.repository}"
}
val m2Url = Url(m2)
config.path = m2Url.encodedPath
config.host = m2Url.host
config.port = m2Url.port
}
override fun mount(configure: Config.() -> Unit): NettyApplicationEngine {
config.configure()
// try 3 times to find a port if random
return tryStart(3).also { this.server = it }
}
private fun tryStart(attempts: Int): NettyApplicationEngine {
return try {
val p = config.port ?: Random.nextInt(10000, 65000)
val s = embeddedServer(Netty, port = p, host = config.host) {
routing {
staticFiles(
remotePath = config.path,
dir = config.repository,
index = null,
) {
enableAutoHeadResponse()
contentType { path ->
when (path.extension) {
"pom", "xml" -> ContentType.Text.Xml
"jar" -> ContentType("application", "java-archive")
else -> ContentType.Text.Plain
}
}
}
}
}
coroutineScope.launch { s.start(wait = true) }
s
} catch (e: Throwable) {
if (config.port == null && attempts > 0) tryStart(attempts - 1) else throw e
}
}
override suspend fun afterSpec(spec: Spec) {
server?.stop()
}
} }

View File

@@ -1,12 +0,0 @@
plugins {
java
}
repositories {
maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) }
}
dependencies {
implementation(platform("io.micrometer:micrometer-bom:1.5.1"))
implementation("io.micrometer:micrometer-core")
}

View File

@@ -1,82 +1,88 @@
{ {
"com.squareup.moshi:moshi": { "com.squareup.moshi:moshi:1.8.0": {
"1.8.0": { "moshi-1.8.0.jar": {
"moshi-1.8.0.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar"
"https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" ],
], "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo="
"hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" },
}, "moshi-1.8.0.pom": {
"moshi-1.8.0.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom"
"https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" ],
], "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8="
"hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8="
}
} }
}, },
"com.squareup.okio:okio": { "com.squareup.moshi:moshi-parent:1.8.0": {
"2.2.2": { "moshi-parent-1.8.0.pom": {
"okio-2.2.2.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom"
"https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" ],
], "hash": "sha256-2t8UzX/uSexrgqkORdccwax1imVTFwGtlNy+98xgP7c="
"hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs="
},
"okio-2.2.2.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom"
],
"hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs="
}
} }
}, },
"org.jetbrains.kotlin:kotlin-stdlib": { "com.squareup.okio:okio:2.2.2": {
"1.2.60": { "okio-2.2.2.jar": {
"kotlin-stdlib-1.2.60.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar"
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" ],
], "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs="
"hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" },
}, "okio-2.2.2.pom": {
"kotlin-stdlib-1.2.60.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom"
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" ],
], "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs="
"hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg="
}
} }
}, },
"org.jetbrains.kotlin:kotlin-stdlib-common": { "org.jetbrains:annotations:13.0": {
"1.2.60": { "annotations-13.0.jar": {
"kotlin-stdlib-common-1.2.60.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar"
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" ],
], "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg="
"hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" },
}, "annotations-13.0.pom": {
"kotlin-stdlib-common-1.2.60.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom"
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" ],
], "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c="
"hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE="
}
} }
}, },
"org.jetbrains:annotations": { "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": {
"13.0": { "kotlin-stdlib-1.2.60.jar": {
"annotations-13.0.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar"
"https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" ],
], "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE="
"hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" },
}, "kotlin-stdlib-1.2.60.pom": {
"annotations-13.0.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom"
"https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" ],
], "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg="
"hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" }
} },
"org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": {
"kotlin-stdlib-common-1.2.60.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar"
],
"hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E="
},
"kotlin-stdlib-common-1.2.60.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom"
],
"hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE="
}
},
"org.sonatype.oss:oss-parent:7": {
"oss-parent-7.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom"
],
"hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
} }
} }
} }

View File

@@ -1,82 +1,88 @@
{ {
"com.squareup.moshi:moshi": { "com.squareup.moshi:moshi:1.8.0": {
"1.8.0": { "moshi-1.8.0.jar": {
"moshi-1.8.0.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar"
"https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" ],
], "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo="
"hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo=" },
}, "moshi-1.8.0.pom": {
"moshi-1.8.0.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom"
"https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom" ],
], "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8="
"hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8="
}
} }
}, },
"com.squareup.okio:okio": { "com.squareup.moshi:moshi-parent:1.8.0": {
"2.2.2": { "moshi-parent-1.8.0.pom": {
"okio-2.2.2.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom"
"https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar" ],
], "hash": "sha256-2t8UzX/uSexrgqkORdccwax1imVTFwGtlNy+98xgP7c="
"hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs="
},
"okio-2.2.2.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom"
],
"hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs="
}
} }
}, },
"org.jetbrains.kotlin:kotlin-stdlib": { "com.squareup.okio:okio:2.2.2": {
"1.2.60": { "okio-2.2.2.jar": {
"kotlin-stdlib-1.2.60.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar"
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" ],
], "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs="
"hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" },
}, "okio-2.2.2.pom": {
"kotlin-stdlib-1.2.60.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom"
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" ],
], "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs="
"hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg="
}
} }
}, },
"org.jetbrains.kotlin:kotlin-stdlib-common": { "org.jetbrains:annotations:13.0": {
"1.2.60": { "annotations-13.0.jar": {
"kotlin-stdlib-common-1.2.60.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar"
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" ],
], "hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg="
"hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E=" },
}, "annotations-13.0.pom": {
"kotlin-stdlib-common-1.2.60.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom"
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom" ],
], "hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c="
"hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE="
}
} }
}, },
"org.jetbrains:annotations": { "org.jetbrains.kotlin:kotlin-stdlib:1.2.60": {
"13.0": { "kotlin-stdlib-1.2.60.jar": {
"annotations-13.0.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar"
"https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" ],
], "hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE="
"hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" },
}, "kotlin-stdlib-1.2.60.pom": {
"annotations-13.0.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom"
"https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" ],
], "hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg="
"hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" }
} },
"org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": {
"kotlin-stdlib-common-1.2.60.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar"
],
"hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E="
},
"kotlin-stdlib-common-1.2.60.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom"
],
"hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE="
}
},
"org.sonatype.oss:oss-parent:7": {
"oss-parent-7.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom"
],
"hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
} }
} }
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +1,32 @@
{ {
"com.badlogicgames.gdx:gdx-platform": { "com.badlogicgames.gdx:gdx-parent:1.9.9": {
"1.9.9": { "gdx-parent-1.9.9.pom": {
"gdx-platform-1.9.9-natives-desktop.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-parent/1.9.9/gdx-parent-1.9.9.pom"
"https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" ],
], "hash": "sha256-JSpktycxGU+lvD37inPSXOa3NXxQLQ+y9W5rTiqaeJM="
"hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" }
}, },
"gdx-platform-1.9.9.pom": { "com.badlogicgames.gdx:gdx-platform:1.9.9": {
"urls": [ "gdx-platform-1.9.9-natives-desktop.jar": {
"https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" "urls": [
], "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar"
"hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" ],
} "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8="
},
"gdx-platform-1.9.9.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom"
],
"hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY="
}
},
"org.sonatype.oss:oss-parent:5": {
"oss-parent-5.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom"
],
"hash": "sha256-FnjUEgpYXYpjATGu7ExSTZKDmFg7fqthbufVqH9SDT0="
} }
} }
} }

View File

@@ -1,18 +1,32 @@
{ {
"com.badlogicgames.gdx:gdx-platform": { "com.badlogicgames.gdx:gdx-parent:1.9.9": {
"1.9.9": { "gdx-parent-1.9.9.pom": {
"gdx-platform-1.9.9-natives-desktop.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-parent/1.9.9/gdx-parent-1.9.9.pom"
"https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar" ],
], "hash": "sha256-JSpktycxGU+lvD37inPSXOa3NXxQLQ+y9W5rTiqaeJM="
"hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8=" }
}, },
"gdx-platform-1.9.9.pom": { "com.badlogicgames.gdx:gdx-platform:1.9.9": {
"urls": [ "gdx-platform-1.9.9-natives-desktop.jar": {
"https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom" "urls": [
], "https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9-natives-desktop.jar"
"hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY=" ],
} "hash": "sha256-e8c9VPpFH+LeJU6PgmCkOb/jutOxFnO6LPMaTxL2hU8="
},
"gdx-platform-1.9.9.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/com/badlogicgames/gdx/gdx-platform/1.9.9/gdx-platform-1.9.9.pom"
],
"hash": "sha256-SWnDZyJaErav4Z4sA+D1WA3U1aQOSR64sd8+cQzofSY="
}
},
"org.sonatype.oss:oss-parent:5": {
"oss-parent-5.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom"
],
"hash": "sha256-FnjUEgpYXYpjATGu7ExSTZKDmFg7fqthbufVqH9SDT0="
} }
} }
} }

View File

@@ -1,44 +1,60 @@
{ {
"io.micrometer:micrometer-bom": { "io.micrometer:micrometer-bom:1.5.1": {
"1.5.1": { "micrometer-bom-1.5.1.pom": {
"micrometer-bom-1.5.1.pom": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/io/micrometer/micrometer-bom/1.5.1/micrometer-bom-1.5.1.pom"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-bom/1.5.1/micrometer-bom-1.5.1.pom" ],
], "hash": "sha256-K/qF6ds8ck5sWvelJBYk+w+K04oQpT/4BtY57WVLRUI="
"hash": "sha256-K/qF6ds8ck5sWvelJBYk+w+K04oQpT/4BtY57WVLRUI="
}
} }
}, },
"io.micrometer:micrometer-core": { "io.micrometer:micrometer-core:1.5.1": {
"1.5.1": { "micrometer-core-1.5.1.jar": {
"micrometer-core-1.5.1.jar": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.jar"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.jar" ],
], "hash": "sha256-DtgVYBDVGDBWMwSfeKC6O+fwqd+N2q4eTizJgQ1wfI8="
"hash": "sha256-DtgVYBDVGDBWMwSfeKC6O+fwqd+N2q4eTizJgQ1wfI8=" },
}, "micrometer-core-1.5.1.pom": {
"micrometer-core-1.5.1.pom": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.pom"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/io/micrometer/micrometer-core/1.5.1/micrometer-core-1.5.1.pom" ],
], "hash": "sha256-Cb4KaUHaOvdOz7VpDax6kJKuT2KWY5Ci73foX2xl6xw="
"hash": "sha256-Cb4KaUHaOvdOz7VpDax6kJKuT2KWY5Ci73foX2xl6xw="
}
} }
}, },
"org.hdrhistogram:HdrHistogram": { "org.hdrhistogram:HdrHistogram:2.1.12": {
"2.1.12": { "HdrHistogram-2.1.12.jar": {
"HdrHistogram-2.1.12.jar": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.jar"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.jar" ],
], "hash": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="
"hash": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=" },
}, "HdrHistogram-2.1.12.pom": {
"HdrHistogram-2.1.12.pom": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.pom"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/hdrhistogram/HdrHistogram/2.1.12/HdrHistogram-2.1.12.pom" ],
], "hash": "sha256-f7PnkMFU0bXiMXC7jL9/cO8ICa8XIp8dywENd5llEIA="
"hash": "sha256-f7PnkMFU0bXiMXC7jL9/cO8ICa8XIp8dywENd5llEIA=" }
} },
"org.latencyutils:LatencyUtils:2.0.3": {
"LatencyUtils-2.0.3.jar": {
"urls": [
"http://0.0.0.0:8989/m2/org/latencyutils/LatencyUtils/2.0.3/LatencyUtils-2.0.3.jar"
],
"hash": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="
},
"LatencyUtils-2.0.3.pom": {
"urls": [
"http://0.0.0.0:8989/m2/org/latencyutils/LatencyUtils/2.0.3/LatencyUtils-2.0.3.pom"
],
"hash": "sha256-jwwBU3kLhK9sCTFtVpvRBu4PAIuTk+gLpHj1v2Vziig="
}
},
"org.sonatype.oss:oss-parent:7": {
"oss-parent-7.pom": {
"urls": [
"http://0.0.0.0:8989/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom"
],
"hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
} }
} }
} }

View File

@@ -1,16 +1,18 @@
{ {
"org.apache:test-SNAPSHOT1": { "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT:20070310.181613-3": {
"2.0.2-SNAPSHOT": { "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": {
"test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.jar"
], ],
"hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE="
}, }
"test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { },
"urls": [ "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT": {
], "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": {
"hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" "urls": [
} "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.pom"
],
"hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs="
} }
} }
} }

View File

@@ -1,16 +1,18 @@
{ {
"org.apache:test-SNAPSHOT1": { "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT:20070310.181613-3": {
"2.0.2-SNAPSHOT": { "test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": {
"test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.jar"
], ],
"hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE="
}, }
"test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": { },
"urls": [ "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT": {
], "test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": {
"hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs=" "urls": [
} "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.pom"
],
"hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs="
} }
} }
} }

View File

@@ -1,18 +1,118 @@
{ {
"com.github.anuken:packr": { "com.eclipsesource.minimal-json:minimal-json:0.9.1": {
"-SNAPSHOT": { "minimal-json-0.9.1.jar": {
"packr--SNAPSHOT.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/eclipsesource/minimal-json/minimal-json/0.9.1/minimal-json-0.9.1.jar"
"https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--packr-1.2-g034efe5-114.jar" ],
], "hash": "sha256-pvRb7vRcTbyODylD0CuzTZ2btyDUoX1NwfChHNHvWFg="
"hash": "sha256-XrfVZLc7efr2n3Bz6mOw8DkRI0T8rU8B/MKUMVDl71w=" },
}, "minimal-json-0.9.1.pom": {
"packr--SNAPSHOT.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/eclipsesource/minimal-json/minimal-json/0.9.1/minimal-json-0.9.1.pom"
"https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--packr-1.2-g034efe5-114.pom" ],
], "hash": "sha256-Xb0I7Og8f0XxOeis+0S+gUv4NugvuGAEdvwMuR2awUM="
"hash": "sha256-xP28J7blX1IzuJxD4u/wy1ZbwAT5RAajBcpBWs1fAxU=" }
} },
"com.github.anuken:packr:-SNAPSHOT:packr-1.2-g034efe5-114": {
"packr--packr-1.2-g034efe5-114.jar": {
"urls": [
"https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--packr-1.2-g034efe5-114.jar"
],
"hash": "sha256-XrfVZLc7efr2n3Bz6mOw8DkRI0T8rU8B/MKUMVDl71w="
}
},
"com.github.anuken:packr:-SNAPSHOT": {
"packr--SNAPSHOT.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/com/github/anuken/packr/-SNAPSHOT/packr--SNAPSHOT.pom"
],
"hash": "sha256-xP28J7blX1IzuJxD4u/wy1ZbwAT5RAajBcpBWs1fAxU="
},
"packr--packr-1.2-g034efe5-114.pom": {
"urls": [
"https://jitpack.io/com/github/anuken/packr/-SNAPSHOT/packr--packr-1.2-g034efe5-114.pom"
],
"hash": "sha256-xP28J7blX1IzuJxD4u/wy1ZbwAT5RAajBcpBWs1fAxU="
}
},
"com.lexicalscope.jewelcli:jewelcli:0.8.9": {
"jewelcli-0.8.9.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/com/lexicalscope/jewelcli/jewelcli/0.8.9/jewelcli-0.8.9.jar"
],
"hash": "sha256-edo0/mgFGCboBtIUgBL7NIHJ5pc4ipG9RMwl1piBAvM="
},
"jewelcli-0.8.9.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/com/lexicalscope/jewelcli/jewelcli/0.8.9/jewelcli-0.8.9.pom"
],
"hash": "sha256-eTF2d4p/6F9cw1QWZQhjpG1Es5CJKI1+DkiheuCZHMQ="
}
},
"com.lexicalscope.jewelcli:jewelcli-parent:0.8.9": {
"jewelcli-parent-0.8.9.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/com/lexicalscope/jewelcli/jewelcli-parent/0.8.9/jewelcli-parent-0.8.9.pom"
],
"hash": "sha256-+K7AtECUZHhdpChr8qutNwSH30dSEVRwb+728brQ9Is="
}
},
"org.slf4j:slf4j-api:1.6.6": {
"slf4j-api-1.6.6.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.6.6/slf4j-api-1.6.6.jar"
],
"hash": "sha256-Q0VrLuMVKanFEtWB5T4oXGX+3ewgSiwUaUXgMrB4ELo="
},
"slf4j-api-1.6.6.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.6.6/slf4j-api-1.6.6.pom"
],
"hash": "sha256-cxmZMiteIokinNntRiTJQexXG3xh0qJ9alB+9zuXyho="
}
},
"org.slf4j:slf4j-parent:1.6.6": {
"slf4j-parent-1.6.6.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.6.6/slf4j-parent-1.6.6.pom"
],
"hash": "sha256-QrjCR2CP2OENW2Zs98gKW1nSseEoRQ97bZ0sIM+2sxs="
}
},
"org.slf4j:slf4j-simple:1.6.6": {
"slf4j-simple-1.6.6.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.6.6/slf4j-simple-1.6.6.jar"
],
"hash": "sha256-Xpfxe7h5v9RDOlHGnjyS/iIQfG/8e8oiRIHy5YmEbgg="
},
"slf4j-simple-1.6.6.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/1.6.6/slf4j-simple-1.6.6.pom"
],
"hash": "sha256-6eV8yFljFwnFUrbskwj+m6FUncWK7ZA5p+UFzeKrUbM="
}
},
"org.sonatype.oss:oss-parent:7": {
"oss-parent-7.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom"
],
"hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
}
},
"org.zeroturnaround:zt-zip:1.10": {
"zt-zip-1.10.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/org/zeroturnaround/zt-zip/1.10/zt-zip-1.10.jar"
],
"hash": "sha256-Vw46sIh5Ok9QLaGJtyutlgzwiqWaFxyDzwj0du1ELBk="
},
"zt-zip-1.10.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/zeroturnaround/zt-zip/1.10/zt-zip-1.10.pom"
],
"hash": "sha256-tsgm40wVcdupU51FIac34FxJmuQOi50BgbYLFdbVCns="
} }
} }
} }

View File

@@ -1,18 +1,16 @@
{ {
"org.apache:test-SNAPSHOT2": { "org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT": {
"2.0.2-SNAPSHOT": { "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": {
"test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" ],
], "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE="
"hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" },
}, "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": {
"test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" ],
], "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8="
"hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8="
}
} }
} }
} }

View File

@@ -1,18 +1,16 @@
{ {
"org.apache:test-SNAPSHOT2": { "org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT": {
"2.0.2-SNAPSHOT": { "test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": {
"test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar" ],
], "hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE="
"hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE=" },
}, "test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": {
"test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom" ],
], "hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8="
"hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8="
}
} }
} }
} }

View File

@@ -1,48 +1,44 @@
{ {
"org.apache:foo": { "org.apache:foo:2.0.0": {
"2.0.0": { "foo-2.0.0.jar": {
"foo-2.0.0.jar": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/apache/foo/2.0.0/foo-2.0.0.jar"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/foo/2.0.0/foo-2.0.0.jar" ],
], "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8="
"hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8="
},
"foo-2.0.0.pom": {
"urls": [
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/foo/2.0.0/foo-2.0.0.pom"
],
"hash": "sha256-gcL/k4xoI5SK4qDNcyH1uHkgiGQv3WohPb45Gsb9gi8="
}
}, },
"1.0.0": { "foo-2.0.0.pom": {
"foo-1.0.0.jar": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/apache/foo/2.0.0/foo-2.0.0.pom"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/foo/1.0.0/foo-1.0.0.jar" ],
], "hash": "sha256-gcL/k4xoI5SK4qDNcyH1uHkgiGQv3WohPb45Gsb9gi8="
"hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8="
},
"foo-1.0.0.pom": {
"urls": [
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/foo/1.0.0/foo-1.0.0.pom"
],
"hash": "sha256-roNL3MgAJuUPxIdJJiSpjU3yEFlJFDQ99QvnaWlkVcE="
}
} }
}, },
"org.apache:test": { "org.apache:foo:1.0.0": {
"1.0.0": { "foo-1.0.0.jar": {
"test-1.0.0.jar": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/apache/foo/1.0.0/foo-1.0.0.jar"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" ],
], "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8="
"hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" },
}, "foo-1.0.0.pom": {
"test-1.0.0.pom": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/apache/foo/1.0.0/foo-1.0.0.pom"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" ],
], "hash": "sha256-roNL3MgAJuUPxIdJJiSpjU3yEFlJFDQ99QvnaWlkVcE="
"hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To=" }
} },
"org.apache:test:1.0.0": {
"test-1.0.0.jar": {
"urls": [
"http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar"
],
"hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8="
},
"test-1.0.0.pom": {
"urls": [
"http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom"
],
"hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To="
} }
} }
} }

View File

@@ -1,146 +1,216 @@
{ {
"com.googlecode.javaewah:JavaEWAH": { "com.googlecode.javaewah:JavaEWAH:1.1.6": {
"1.1.6": { "JavaEWAH-1.1.6.jar": {
"JavaEWAH-1.1.6.jar": { "urls": [
"urls": [ "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar"
"https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar" ],
], "hash": "sha256-941EoeOHfxznSLSoXfUXHl6Omlw8b2O7kAPbb4TM6VI="
"hash": "sha256-941EoeOHfxznSLSoXfUXHl6Omlw8b2O7kAPbb4TM6VI=" },
}, "JavaEWAH-1.1.6.pom": {
"JavaEWAH-1.1.6.pom": { "urls": [
"urls": [ "https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.pom"
"https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.pom" ],
], "hash": "sha256-f0/5GbHuF783duBYo/IOYXPbI6XkTPLRB+x1cMGGq/A="
"hash": "sha256-f0/5GbHuF783duBYo/IOYXPbI6XkTPLRB+x1cMGGq/A="
}
} }
}, },
"com.jcraft:jsch": { "com.jcraft:jsch:0.1.54": {
"0.1.54": { "jsch-0.1.54.jar": {
"jsch-0.1.54.jar": { "urls": [
"urls": [ "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar"
"https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar" ],
], "hash": "sha256-kusnOjMWdiR4/dT+A6DOGELFb0lsnBL+EjXbgEUOH9s="
"hash": "sha256-kusnOjMWdiR4/dT+A6DOGELFb0lsnBL+EjXbgEUOH9s=" },
}, "jsch-0.1.54.pom": {
"jsch-0.1.54.pom": { "urls": [
"urls": [ "https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.pom"
"https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.pom" ],
], "hash": "sha256-q49RIDm+f2riDhjnQ7Sp2KIJWElEMZF9pYrlqu+KNHg="
"hash": "sha256-q49RIDm+f2riDhjnQ7Sp2KIJWElEMZF9pYrlqu+KNHg="
}
} }
}, },
"commons-codec:commons-codec": { "commons-codec:commons-codec:1.6": {
"1.6": { "commons-codec-1.6.jar": {
"commons-codec-1.6.jar": { "urls": [
"urls": [ "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar"
"https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar" ],
], "hash": "sha256-VLNOlBuOFBS9PkDXNu/TSBdy3CbbMpb2qkXOyfYgPYY="
"hash": "sha256-VLNOlBuOFBS9PkDXNu/TSBdy3CbbMpb2qkXOyfYgPYY=" },
}, "commons-codec-1.6.pom": {
"commons-codec-1.6.pom": { "urls": [
"urls": [ "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom"
"https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom" ],
], "hash": "sha256-oG410//zprgT2UiU6/PkmPlUDIZMWzmueDkH46bHKIk="
"hash": "sha256-oG410//zprgT2UiU6/PkmPlUDIZMWzmueDkH46bHKIk="
}
} }
}, },
"commons-logging:commons-logging": { "commons-logging:commons-logging:1.1.3": {
"1.1.3": { "commons-logging-1.1.3.jar": {
"commons-logging-1.1.3.jar": { "urls": [
"urls": [ "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar"
"https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar" ],
], "hash": "sha256-cJA/b8gumQjI2p8gRD9h2Q8IcKMSZCmR/oRioLk5F4Q="
"hash": "sha256-cJA/b8gumQjI2p8gRD9h2Q8IcKMSZCmR/oRioLk5F4Q=" },
}, "commons-logging-1.1.3.pom": {
"commons-logging-1.1.3.pom": { "urls": [
"urls": [ "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.pom"
"https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.pom" ],
], "hash": "sha256-MlCsOsa9YO0GMfXNAzUDKymT1j5AWmrgVV0np+SGWEk="
"hash": "sha256-MlCsOsa9YO0GMfXNAzUDKymT1j5AWmrgVV0np+SGWEk="
}
} }
}, },
"gradle.plugin.net.vivin:gradle-semantic-build-versioning": { "gradle.plugin.net.vivin:gradle-semantic-build-versioning:4.0.0": {
"4.0.0": { "gradle-semantic-build-versioning-4.0.0.jar": {
"gradle-semantic-build-versioning-4.0.0.jar": { "urls": [
"urls": [ "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.jar"
"https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.jar" ],
], "hash": "sha256-UTjmfOjgGUN4ALk8n2+dD8vr763Jb7xOvAl1yZomHvg="
"hash": "sha256-UTjmfOjgGUN4ALk8n2+dD8vr763Jb7xOvAl1yZomHvg=" },
}, "gradle-semantic-build-versioning-4.0.0.pom": {
"gradle-semantic-build-versioning-4.0.0.pom": { "urls": [
"urls": [ "https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.pom"
"https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.pom" ],
], "hash": "sha256-TygodBYH7RAtletfGJ1JbHhA7UY6zqifHlGmBWdxTvc="
"hash": "sha256-TygodBYH7RAtletfGJ1JbHhA7UY6zqifHlGmBWdxTvc="
}
} }
}, },
"org.apache.httpcomponents:httpclient": { "org.apache:apache:13": {
"4.3.6": { "apache-13.pom": {
"httpclient-4.3.6.jar": { "urls": [
"urls": [ "https://plugins.gradle.org/m2/org/apache/apache/13/apache-13.pom"
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar" ],
], "hash": "sha256-/1E9sDYf1BI3vvR4SWi8FarkeNTsCpSW+BEHLMrzhB0="
"hash": "sha256-eYONnq73PU+FLGOkgIMMOi1LWQ8Ks66BWkiUY+RxQAQ="
},
"httpclient-4.3.6.pom": {
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.pom"
],
"hash": "sha256-0CY09hMekUlhwCqoNnEeuscnBLJ+JsW9Iju62JsbZMM="
}
} }
}, },
"org.apache.httpcomponents:httpcore": { "org.apache:apache:9": {
"4.3.3": { "apache-9.pom": {
"httpcore-4.3.3.jar": { "urls": [
"urls": [ "https://plugins.gradle.org/m2/org/apache/apache/9/apache-9.pom"
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar" ],
], "hash": "sha256-SUbmClR8jtpp87wjxbbw2tz4Rp6kmx0dp940rs/PGN0="
"hash": "sha256-UoXegK8WUcSJMTuRqfQMZaTNy2s73nFvzAKNFoaaWpM="
},
"httpcore-4.3.3.pom": {
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.pom"
],
"hash": "sha256-tCf3z2fHWk4/niEI01v0UwNXPBRex3j8rc/6zvF6EmQ="
}
} }
}, },
"org.eclipse.jgit:org.eclipse.jgit": { "org.apache.commons:commons-parent:28": {
"4.8.0.201706111038-r": { "commons-parent-28.pom": {
"org.eclipse.jgit-4.8.0.201706111038-r.jar": { "urls": [
"urls": [ "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/28/commons-parent-28.pom"
"https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.jar" ],
], "hash": "sha256-FHM6aOixILad5gzZbSIhRtzzLwPBxsxqdQsSabr+hsc="
"hash": "sha256-SdkS6NXM4N0I3KPTkBiduGkqj34zY8274YJYFGIACro="
},
"org.eclipse.jgit-4.8.0.201706111038-r.pom": {
"urls": [
"https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.pom"
],
"hash": "sha256-pVap9a38avSbKhLnLcPNfkPbj9whbA81iFlyovWton0="
}
} }
}, },
"org.slf4j:slf4j-api": { "org.apache.commons:commons-parent:22": {
"1.7.2": { "commons-parent-22.pom": {
"slf4j-api-1.7.2.jar": { "urls": [
"urls": [ "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/22/commons-parent-22.pom"
"https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar" ],
], "hash": "sha256-+4xeVeMKet20/yEIWKDo0klO1nV7vhkBLamdUVhsPLs="
"hash": "sha256-O654m0ATM7Kh0WA7f6Vz4ZkIYoGRcHID9utwjN7iwFI=" }
}, },
"slf4j-api-1.7.2.pom": { "org.apache.httpcomponents:httpclient:4.3.6": {
"urls": [ "httpclient-4.3.6.jar": {
"https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom" "urls": [
], "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar"
"hash": "sha256-LqynGv4KFRb0q9jp/5B4ONJo84yBw6VCzOjX87h8XUw=" ],
} "hash": "sha256-eYONnq73PU+FLGOkgIMMOi1LWQ8Ks66BWkiUY+RxQAQ="
},
"httpclient-4.3.6.pom": {
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.pom"
],
"hash": "sha256-0CY09hMekUlhwCqoNnEeuscnBLJ+JsW9Iju62JsbZMM="
}
},
"org.apache.httpcomponents:httpcomponents-client:4.3.6": {
"httpcomponents-client-4.3.6.pom": {
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-client/4.3.6/httpcomponents-client-4.3.6.pom"
],
"hash": "sha256-StooJ7SWM5gmiRx8gdzrpkcCneb8GIixazyrVlCrzGM="
}
},
"org.apache.httpcomponents:httpcomponents-core:4.3.3": {
"httpcomponents-core-4.3.3.pom": {
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-core/4.3.3/httpcomponents-core-4.3.3.pom"
],
"hash": "sha256-wW4vwNSbp6As71teJgBYWp9nNVMyim+eWPJClt8d0DE="
}
},
"org.apache.httpcomponents:httpcore:4.3.3": {
"httpcore-4.3.3.jar": {
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar"
],
"hash": "sha256-UoXegK8WUcSJMTuRqfQMZaTNy2s73nFvzAKNFoaaWpM="
},
"httpcore-4.3.3.pom": {
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.pom"
],
"hash": "sha256-tCf3z2fHWk4/niEI01v0UwNXPBRex3j8rc/6zvF6EmQ="
}
},
"org.apache.httpcomponents:project:7": {
"project-7.pom": {
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/project/7/project-7.pom"
],
"hash": "sha256-PW66QoVVpVjeBGtddurMH1pUtPXyC4TWNu16/xiqSMM="
}
},
"org.eclipse.jgit:org.eclipse.jgit:4.8.0.201706111038-r": {
"org.eclipse.jgit-4.8.0.201706111038-r.jar": {
"urls": [
"https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.jar"
],
"hash": "sha256-SdkS6NXM4N0I3KPTkBiduGkqj34zY8274YJYFGIACro="
},
"org.eclipse.jgit-4.8.0.201706111038-r.pom": {
"urls": [
"https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.pom"
],
"hash": "sha256-pVap9a38avSbKhLnLcPNfkPbj9whbA81iFlyovWton0="
}
},
"org.eclipse.jgit:org.eclipse.jgit-parent:4.8.0.201706111038-r": {
"org.eclipse.jgit-parent-4.8.0.201706111038-r.pom": {
"urls": [
"https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit-parent/4.8.0.201706111038-r/org.eclipse.jgit-parent-4.8.0.201706111038-r.pom"
],
"hash": "sha256-OWpMyJQgaHP/EH0GapliUrC0f1hbiM9X/Dsx6T1JKHg="
}
},
"org.slf4j:slf4j-api:1.7.2": {
"slf4j-api-1.7.2.jar": {
"urls": [
"https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar"
],
"hash": "sha256-O654m0ATM7Kh0WA7f6Vz4ZkIYoGRcHID9utwjN7iwFI="
},
"slf4j-api-1.7.2.pom": {
"urls": [
"https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom"
],
"hash": "sha256-LqynGv4KFRb0q9jp/5B4ONJo84yBw6VCzOjX87h8XUw="
}
},
"org.slf4j:slf4j-parent:1.7.2": {
"slf4j-parent-1.7.2.pom": {
"urls": [
"https://plugins.gradle.org/m2/org/slf4j/slf4j-parent/1.7.2/slf4j-parent-1.7.2.pom"
],
"hash": "sha256-HY4ISm8jhK3kJoUzK1Kg7OCQR4ZB3BTA+oxS4eKYRCU="
}
},
"org.sonatype.oss:oss-parent:6": {
"oss-parent-6.pom": {
"urls": [
"https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/6/oss-parent-6.pom"
],
"hash": "sha256-tDBtE+j1OSRYobMIZvHP8WGz0uaZmojQWe6jkyyKhJk="
}
},
"org.sonatype.oss:oss-parent:5": {
"oss-parent-5.pom": {
"urls": [
"https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom"
],
"hash": "sha256-FnjUEgpYXYpjATGu7ExSTZKDmFg7fqthbufVqH9SDT0="
} }
} }
} }

View File

@@ -1,34 +1,30 @@
{ {
"org.opendof.core-java:dof-cipher-sms4": { "org.opendof.core-java:dof-cipher-sms4:1.0": {
"1.0": { "dof-cipher-sms4-1.0.jar": {
"dof-cipher-sms4-1.0.jar": { "urls": [
"urls": [ "https://asset.opendof.org/artifact/org.opendof.core-java/dof-cipher-sms4/1.0/jars/dof-cipher-sms4-1.0.jar"
"https://asset.opendof.org/artifact/org.opendof.core-java/dof-cipher-sms4/1.0/dof-cipher-sms4-1.0.jar" ],
], "hash": "sha256-/Joo51NA6nBPEwFuFcnDc10JQZDE8P3jF3P4gl0vpMA="
"hash": "sha256-/Joo51NA6nBPEwFuFcnDc10JQZDE8P3jF3P4gl0vpMA=" },
}, "ivy.xml": {
"ivy-1.0.xml": { "urls": [
"urls": [ "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-cipher-sms4/1.0/ivy.xml"
"https://asset.opendof.org/ivy2/org.opendof.core-java/dof-cipher-sms4/1.0/ivy.xml" ],
], "hash": "sha256-rh+pQpXqPP/cmBD8slvwMrKlWCUb3JNzW3l58hd7oJ8="
"hash": "sha256-rh+pQpXqPP/cmBD8slvwMrKlWCUb3JNzW3l58hd7oJ8="
}
} }
}, },
"org.opendof.core-java:dof-oal": { "org.opendof.core-java:dof-oal:7.0.2": {
"7.0.2": { "dof-oal-7.0.2.jar": {
"dof-oal-7.0.2.jar": { "urls": [
"urls": [ "https://asset.opendof.org/artifact/org.opendof.core-java/dof-oal/7.0.2/jars/dof-oal-7.0.2.jar"
"https://asset.opendof.org/artifact/org.opendof.core-java/dof-oal/7.0.2/dof-oal-7.0.2.jar" ],
], "hash": "sha256-u+FUhQGBA8MRl28mXMTSnZ2HY2ysPHq7h9lANmHBK40="
"hash": "sha256-u+FUhQGBA8MRl28mXMTSnZ2HY2ysPHq7h9lANmHBK40=" },
}, "ivy.xml": {
"ivy-7.0.2.xml": { "urls": [
"urls": [ "https://asset.opendof.org/ivy2/org.opendof.core-java/dof-oal/7.0.2/ivy.xml"
"https://asset.opendof.org/ivy2/org.opendof.core-java/dof-oal/7.0.2/ivy.xml" ],
], "hash": "sha256-KZoUVyoDcfH/B/9V1SVqNiA/XIb3zlwoJkjb/jD+xig="
"hash": "sha256-KZoUVyoDcfH/B/9V1SVqNiA/XIb3zlwoJkjb/jD+xig="
}
} }
} }
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +1,16 @@
{ {
"org.apache:test": { "org.apache:test:1.0.0": {
"1.0.0": { "test-1.0.0.jar": {
"test-1.0.0.jar": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" ],
], "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8="
"hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" },
}, "test-1.0.0.pom": {
"test-1.0.0.pom": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" ],
], "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To="
"hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To="
}
} }
} }
} }

View File

@@ -1,18 +1,16 @@
{ {
"org.apache:test": { "org.apache:test:1.0.0": {
"1.0.0": { "test-1.0.0.jar": {
"test-1.0.0.jar": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.jar" ],
], "hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8="
"hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8=" },
}, "test-1.0.0.pom": {
"test-1.0.0.pom": { "urls": [
"urls": [ "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom"
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test/1.0.0/test-1.0.0.pom" ],
], "hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To="
"hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To="
}
} }
} }
} }

View File

@@ -1,128 +1,146 @@
{ {
"com.squareup.moshi:moshi": { "com.squareup.moshi:moshi:1.8.0": {
"1.8.0": { "moshi-1.8.0.jar": {
"moshi-1.8.0.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar"
"https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" ],
], "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo="
"hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo="
},
"moshi-1.8.0.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom"
],
"hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8="
}
}
},
"com.squareup.okio:okio": {
"2.2.2": {
"okio-2.2.2.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar"
],
"hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs="
},
"okio-2.2.2.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom"
],
"hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs="
}
}, },
"1.16.0": { "moshi-1.8.0.pom": {
"okio-1.16.0.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom"
"https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" ],
], "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8="
"hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4="
},
"okio-1.16.0.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom"
],
"hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY="
}
} }
}, },
"junit:junit": { "com.squareup.moshi:moshi-parent:1.8.0": {
"4.12": { "moshi-parent-1.8.0.pom": {
"junit-4.12.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom"
"https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" ],
], "hash": "sha256-2t8UzX/uSexrgqkORdccwax1imVTFwGtlNy+98xgP7c="
"hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo="
},
"junit-4.12.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom"
],
"hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ="
}
} }
}, },
"org.hamcrest:hamcrest-core": { "com.squareup.okio:okio:2.2.2": {
"1.3": { "okio-2.2.2.jar": {
"hamcrest-core-1.3.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar"
"https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" ],
], "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs="
"hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" },
}, "okio-2.2.2.pom": {
"hamcrest-core-1.3.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom"
"https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" ],
], "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs="
"hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
}
} }
}, },
"org.jetbrains.kotlin:kotlin-stdlib": { "com.squareup.okio:okio:1.16.0": {
"1.2.60": { "okio-1.16.0.jar": {
"kotlin-stdlib-1.2.60.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar"
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" ],
], "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4="
"hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" },
}, "okio-1.16.0.pom": {
"kotlin-stdlib-1.2.60.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom"
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" ],
], "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY="
"hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg="
}
} }
}, },
"org.jetbrains.kotlin:kotlin-stdlib-common": { "com.squareup.okio:okio-parent:1.16.0": {
"1.2.60": { "okio-parent-1.16.0.pom": {
"kotlin-stdlib-common-1.2.60.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.16.0/okio-parent-1.16.0.pom"
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" ],
], "hash": "sha256-C3Qkw/qrO7UzMJbjmVf4j41QzgyYv7pxo/z6oKrwVSw="
"hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E="
},
"kotlin-stdlib-common-1.2.60.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom"
],
"hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE="
}
} }
}, },
"org.jetbrains:annotations": { "junit:junit:4.12": {
"13.0": { "junit-4.12.jar": {
"annotations-13.0.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar"
"https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" ],
], "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo="
"hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" },
}, "junit-4.12.pom": {
"annotations-13.0.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom"
"https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" ],
], "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ="
"hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" }
} },
"org.hamcrest:hamcrest-core:1.3": {
"hamcrest-core-1.3.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"
],
"hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok="
},
"hamcrest-core-1.3.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom"
],
"hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
}
},
"org.hamcrest:hamcrest-parent:1.3": {
"hamcrest-parent-1.3.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom"
],
"hash": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
}
},
"org.jetbrains:annotations:13.0": {
"annotations-13.0.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar"
],
"hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg="
},
"annotations-13.0.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom"
],
"hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c="
}
},
"org.jetbrains.kotlin:kotlin-stdlib:1.2.60": {
"kotlin-stdlib-1.2.60.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar"
],
"hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE="
},
"kotlin-stdlib-1.2.60.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom"
],
"hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg="
}
},
"org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": {
"kotlin-stdlib-common-1.2.60.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar"
],
"hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E="
},
"kotlin-stdlib-common-1.2.60.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom"
],
"hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE="
}
},
"org.sonatype.oss:oss-parent:7": {
"oss-parent-7.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom"
],
"hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
} }
} }
} }

View File

@@ -1,128 +1,146 @@
{ {
"com.squareup.moshi:moshi": { "com.squareup.moshi:moshi:1.8.0": {
"1.8.0": { "moshi-1.8.0.jar": {
"moshi-1.8.0.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar"
"https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.jar" ],
], "hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo="
"hash": "sha256-Qv50bSaU6hH+agK+zZ2iyj2v6Xye/VCg+a9cRZbnSmo="
},
"moshi-1.8.0.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom"
],
"hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8="
}
}
},
"com.squareup.okio:okio": {
"2.2.2": {
"okio-2.2.2.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar"
],
"hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs="
},
"okio-2.2.2.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom"
],
"hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs="
}
}, },
"1.16.0": { "moshi-1.8.0.pom": {
"okio-1.16.0.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.8.0/moshi-1.8.0.pom"
"https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar" ],
], "hash": "sha256-FLuAWbnddiACWSkN+IfjfmaaB0qsnImUAePIEC/lII8="
"hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4="
},
"okio-1.16.0.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom"
],
"hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY="
}
} }
}, },
"junit:junit": { "com.squareup.moshi:moshi-parent:1.8.0": {
"4.12": { "moshi-parent-1.8.0.pom": {
"junit-4.12.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-parent/1.8.0/moshi-parent-1.8.0.pom"
"https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar" ],
], "hash": "sha256-2t8UzX/uSexrgqkORdccwax1imVTFwGtlNy+98xgP7c="
"hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo="
},
"junit-4.12.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom"
],
"hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ="
}
} }
}, },
"org.hamcrest:hamcrest-core": { "com.squareup.okio:okio:2.2.2": {
"1.3": { "okio-2.2.2.jar": {
"hamcrest-core-1.3.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar"
"https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" ],
], "hash": "sha256-5YyXQGprsROIk3UCmaxjxqoEs4trSerhv8rRpj75uhs="
"hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=" },
}, "okio-2.2.2.pom": {
"hamcrest-core-1.3.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom"
"https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom" ],
], "hash": "sha256-/WIZiPf2lXAlc13G3QkLAKIPOju413ynkDYHf2KbFAs="
"hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
}
} }
}, },
"org.jetbrains.kotlin:kotlin-stdlib": { "com.squareup.okio:okio:1.16.0": {
"1.2.60": { "okio-1.16.0.jar": {
"kotlin-stdlib-1.2.60.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar"
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar" ],
], "hash": "sha256-7ASE/xkDZA44RcKxCruZ7/LTIwj/40WeX5IwmkUbnH4="
"hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE=" },
}, "okio-1.16.0.pom": {
"kotlin-stdlib-1.2.60.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom"
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom" ],
], "hash": "sha256-HSUhYhwIdRI6qRMRsv6O3v0O2T9mvm3+oYzGG8XJnjY="
"hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg="
}
} }
}, },
"org.jetbrains.kotlin:kotlin-stdlib-common": { "com.squareup.okio:okio-parent:1.16.0": {
"1.2.60": { "okio-parent-1.16.0.pom": {
"kotlin-stdlib-common-1.2.60.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.16.0/okio-parent-1.16.0.pom"
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar" ],
], "hash": "sha256-C3Qkw/qrO7UzMJbjmVf4j41QzgyYv7pxo/z6oKrwVSw="
"hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E="
},
"kotlin-stdlib-common-1.2.60.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom"
],
"hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE="
}
} }
}, },
"org.jetbrains:annotations": { "junit:junit:4.12": {
"13.0": { "junit-4.12.jar": {
"annotations-13.0.jar": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.jar"
"https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" ],
], "hash": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo="
"hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=" },
}, "junit-4.12.pom": {
"annotations-13.0.pom": { "urls": [
"urls": [ "https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom"
"https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom" ],
], "hash": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ="
"hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c=" }
} },
"org.hamcrest:hamcrest-core:1.3": {
"hamcrest-core-1.3.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"
],
"hash": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok="
},
"hamcrest-core-1.3.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom"
],
"hash": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
}
},
"org.hamcrest:hamcrest-parent:1.3": {
"hamcrest-parent-1.3.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom"
],
"hash": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
}
},
"org.jetbrains:annotations:13.0": {
"annotations-13.0.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar"
],
"hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg="
},
"annotations-13.0.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom"
],
"hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c="
}
},
"org.jetbrains.kotlin:kotlin-stdlib:1.2.60": {
"kotlin-stdlib-1.2.60.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.jar"
],
"hash": "sha256-ahMCmPUXGsUqHiSW9+rnhbb1ZBbqPMuZ5DRNBNg/8HE="
},
"kotlin-stdlib-1.2.60.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.60/kotlin-stdlib-1.2.60.pom"
],
"hash": "sha256-5jKJkgnmtMqrlA/YLk7GOjLjJkP4Fff6cJdkeJDXnxg="
}
},
"org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60": {
"kotlin-stdlib-common-1.2.60.jar": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.jar"
],
"hash": "sha256-CbQ3WgZc8SeryZjF3PIrFmTEWvQrSJSZ16j0+Kt5P7E="
},
"kotlin-stdlib-common-1.2.60.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.60/kotlin-stdlib-common-1.2.60.pom"
],
"hash": "sha256-gwwnrx4c8k8PUm6kV5AcQ/OMGbtvfl03Y8PSU98bjaE="
}
},
"org.sonatype.oss:oss-parent:7": {
"oss-parent-7.pom": {
"urls": [
"https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom"
],
"hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
} }
} }
} }

View File

@@ -11,10 +11,10 @@ dependencies {
implementation("com.natpryce:konfig:1.6.10.0") implementation("com.natpryce:konfig:1.6.10.0")
implementation("com.github.pengrad:java-telegram-bot-api:4.6.0") implementation("com.github.pengrad:java-telegram-bot-api:4.6.0")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3")
implementation("org.jetbrains.exposed:exposed-core:0.21.1") implementation("org.jetbrains.exposed:exposed-core:0.50.1")
implementation("org.jetbrains.exposed", "exposed-dao", "0.21.1") implementation("org.jetbrains.exposed", "exposed-dao", "0.50.1")
implementation("org.jetbrains.exposed", "exposed-jdbc", "0.21.1") implementation("org.jetbrains.exposed", "exposed-jdbc", "0.50.1")
implementation("org.jetbrains.exposed", "exposed-jodatime", "0.21.1") implementation("org.jetbrains.exposed", "exposed-jodatime", "0.50.1")
implementation("io.javalin:javalin:3.7.0") implementation("io.javalin:javalin:3.7.0")
implementation("org.slf4j:slf4j-simple:1.8.0-beta4") implementation("org.slf4j:slf4j-simple:1.8.0-beta4")
implementation(group = "org.xerial", name = "sqlite-jdbc", version = "3.30.1") implementation(group = "org.xerial", name = "sqlite-jdbc", version = "3.30.1")

View File

@@ -0,0 +1,16 @@
plugins {
java
}
repositories {
maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
println(uri(System.getProperty("org.nixos.gradle2nix.m2")))
isAllowInsecureProtocol = true
}
}
dependencies {
implementation(platform("io.micrometer:micrometer-bom:1.5.1"))
implementation("io.micrometer:micrometer-core")
}

View File

@@ -3,7 +3,10 @@ plugins {
} }
repositories { repositories {
maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
allowInsecureProtocol = true
}
} }
dependencies { dependencies {

View File

@@ -4,7 +4,10 @@ plugins {
} }
repositories { repositories {
maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
isAllowInsecureProtocol = true
}
} }
dependencies { dependencies {

View File

@@ -3,6 +3,7 @@ plugins {
} }
repositories { repositories {
mavenCentral()
maven { url 'https://jitpack.io' } maven { url 'https://jitpack.io' }
} }

View File

@@ -3,7 +3,10 @@ plugins {
} }
repositories { repositories {
maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
allowInsecureProtocol = true
}
} }
dependencies { dependencies {

View File

@@ -4,7 +4,10 @@ plugins {
} }
repositories { repositories {
maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
isAllowInsecureProtocol = true
}
} }
dependencies { dependencies {

View File

@@ -1,7 +1,10 @@
apply plugin: 'java' apply plugin: 'java'
repositories { repositories {
maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
allowInsecureProtocol true
}
} }
dependencies { dependencies {

View File

@@ -3,7 +3,10 @@ group = 'org.test.included'
version = '1.0' version = '1.0'
repositories { repositories {
maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
allowInsecureProtocol true
}
} }
dependencies { dependencies {

View File

@@ -1,6 +1,9 @@
buildscript { buildscript {
repositories { repositories {
maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) } maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
allowInsecureProtocol true
}
} }
dependencies { dependencies {
classpath 'org.apache:foo:2.0.0' classpath 'org.apache:foo:2.0.0'

View File

@@ -1,3 +1,5 @@
package projects.s3.maven.groovy
plugins { plugins {
id('java') id('java')
} }

View File

@@ -0,0 +1 @@
package projects.s3.maven.groovy

View File

@@ -2,6 +2,7 @@ buildscript {
repositories { repositories {
maven { maven {
url System.getProperty("org.nixos.gradle2nix.m2") url System.getProperty("org.nixos.gradle2nix.m2")
allowInsecureProtocol true
} }
} }
dependencies { dependencies {

View File

@@ -0,0 +1,9 @@
dependencyResolutionManagement {
repositories {
maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
isAllowInsecureProtocol = true
}
}
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
}

View File

@@ -0,0 +1,155 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2007-2011 Sonatype, Inc. All rights reserved.
~
~ This program is licensed to you under the Apache License Version 2.0,
~ and you may not use this file except in compliance with the Apache License Version 2.0.
~ You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the Apache License Version 2.0 is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
<packaging>pom</packaging>
<name>Sonatype OSS Parent</name>
<url>http://nexus.sonatype.org/oss-repository-hosting.html</url>
<description>Sonatype helps open source projects to set up Maven repositories on https://oss.sonatype.org/ </description>
<scm>
<connection>scm:svn:http://svn.sonatype.org/spice/tags/oss-parent-7</connection>
<developerConnection>scm:svn:https://svn.sonatype.org/spice/tags/oss-parent-7</developerConnection>
<url>http://svn.sonatype.org/spice/tags/oss-parent-7</url>
</scm>
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<distributionManagement>
<snapshotRepository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>${sonatypeOssDistMgmtSnapshotsUrl}</url>
</snapshotRepository>
<repository>
<id>sonatype-nexus-staging</id>
<name>Nexus Release Repository</name>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>enforce-maven</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>(,2.1.0),(2.1.0,2.2.0),(2.2.0,)</version>
<message>Maven 2.1.0 and 2.2.0 produce incorrect GPG signatures and checksums respectively.</message>
</requireMavenVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.1</version>
<configuration>
<mavenExecutorId>forked-path</mavenExecutorId>
<useReleaseProfile>false</useReleaseProfile>
<arguments>-Psonatype-oss-release</arguments>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<sonatypeOssDistMgmtSnapshotsUrl>https://oss.sonatype.org/content/repositories/snapshots/</sonatypeOssDistMgmtSnapshotsUrl>
</properties>
<profiles>
<profile>
<id>sonatype-oss-release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View File

@@ -0,0 +1 @@
3e418cf7f2607bf359e6c514a992cb38

View File

@@ -0,0 +1 @@
46b8a785b60a2767095b8611613b58577e96d4c9

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<versioning>
<latest>7</latest>
<release>7</release>
<versions>
<version>1</version>
<version>2</version>
<version>3</version>
<version>4</version>
<version>5</version>
<version>6</version>
<version>7</version>
</versions>
<lastUpdated>20110307124442</lastUpdated>
</versioning>
</metadata>

Some files were not shown because too many files have changed in this diff Show More