Update build; improve caching; improve tests

This commit is contained in:
Tad Fisher
2020-11-22 16:22:22 -08:00
parent 2ad217b878
commit beb157cf18
83 changed files with 3732 additions and 1771 deletions

View File

@@ -27,7 +27,7 @@ dependencies {
} }
application { application {
mainClassName = "org.nixos.gradle2nix.MainKt" mainClass.set("org.nixos.gradle2nix.MainKt")
applicationName = "gradle2nix" applicationName = "gradle2nix"
applicationDefaultJvmArgs += "-Dorg.nixos.gradle2nix.share=@APP_HOME@/share" applicationDefaultJvmArgs += "-Dorg.nixos.gradle2nix.share=@APP_HOME@/share"
applicationDistribution applicationDistribution

33
app/gradle.lockfile Normal file
View File

@@ -0,0 +1,33 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.christophsturm:filepeek:0.1.2=testRuntimeClasspath
com.github.ajalt:clikt:2.8.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.squareup.moshi:moshi-adapters:1.11.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.squareup.moshi:moshi-kotlin:1.11.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.squareup.moshi:moshi:1.11.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.squareup.okio:okio:2.9.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.github.classgraph:classgraph:4.8.37=testRuntimeClasspath
io.strikt:strikt-core:0.28.0=testCompileClasspath,testRuntimeClasspath
net.swiftzer.semver:semver:1.1.1=runtimeClasspath,testRuntimeClasspath
org.apiguardian:apiguardian-api:1.1.0=testRuntimeClasspath
org.gradle:gradle-tooling-api:6.8-milestone-2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-reflect:1.4.10=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-common:1.4.10=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.10=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib:1.4.10=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.3=testRuntimeClasspath
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.3.9=testRuntimeClasspath
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9=testRuntimeClasspath
org.jetbrains:annotations:13.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.junit.platform:junit-platform-commons:1.6.0=testRuntimeClasspath
org.junit.platform:junit-platform-engine:1.6.0=testRuntimeClasspath
org.junit:junit-bom:5.6.0=testRuntimeClasspath
org.opentest4j:opentest4j:1.2.0=testCompileClasspath,testRuntimeClasspath
org.slf4j:slf4j-api:2.0.0-alpha1=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.slf4j:slf4j-simple:2.0.0-alpha1=runtimeClasspath,testRuntimeClasspath
org.spekframework.spek2:spek-dsl-jvm:2.0.14=testCompileClasspath,testRuntimeClasspath
org.spekframework.spek2:spek-runner-junit5:2.0.14=testRuntimeClasspath
org.spekframework.spek2:spek-runtime-jvm:2.0.14=testRuntimeClasspath
empty=

View File

@@ -1,16 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.github.ajalt:clikt:2.6.0
com.squareup.moshi:moshi-adapters:1.9.2
com.squareup.moshi:moshi-kotlin:1.9.2
com.squareup.moshi:moshi:1.9.2
com.squareup.okio:okio:2.6.0
org.gradle:gradle-tooling-api:6.3
org.jetbrains.kotlin:kotlin-reflect:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.70
org.jetbrains.kotlin:kotlin-stdlib:1.3.70
org.jetbrains:annotations:13.0
org.slf4j:slf4j-api:2.0.0-alpha1

View File

@@ -1,18 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.github.ajalt:clikt:2.6.0
com.squareup.moshi:moshi-adapters:1.9.2
com.squareup.moshi:moshi-kotlin:1.9.2
com.squareup.moshi:moshi:1.9.2
com.squareup.okio:okio:2.6.0
net.swiftzer.semver:semver:1.1.1
org.gradle:gradle-tooling-api:6.3
org.jetbrains.kotlin:kotlin-reflect:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.70
org.jetbrains.kotlin:kotlin-stdlib:1.3.70
org.jetbrains:annotations:13.0
org.slf4j:slf4j-api:2.0.0-alpha1
org.slf4j:slf4j-simple:2.0.0-alpha1

View File

@@ -1,20 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.christophsturm:filepeek:0.1.2
com.github.ajalt:clikt:2.6.0
com.squareup.moshi:moshi-adapters:1.9.2
com.squareup.moshi:moshi-kotlin:1.9.2
com.squareup.moshi:moshi:1.9.2
com.squareup.okio:okio:2.6.0
io.strikt:strikt-core:0.25.0
org.gradle:gradle-tooling-api:6.3
org.jetbrains.kotlin:kotlin-reflect:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.70
org.jetbrains.kotlin:kotlin-stdlib:1.3.70
org.jetbrains:annotations:13.0
org.opentest4j:opentest4j:1.2.0
org.slf4j:slf4j-api:2.0.0-alpha1
org.spekframework.spek2:spek-dsl-jvm:2.0.10

View File

@@ -1,31 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.christophsturm:filepeek:0.1.2
com.github.ajalt:clikt:2.6.0
com.squareup.moshi:moshi-adapters:1.9.2
com.squareup.moshi:moshi-kotlin:1.9.2
com.squareup.moshi:moshi:1.9.2
com.squareup.okio:okio:2.6.0
io.github.classgraph:classgraph:4.8.37
io.strikt:strikt-core:0.25.0
net.swiftzer.semver:semver:1.1.1
org.apiguardian:apiguardian-api:1.1.0
org.gradle:gradle-tooling-api:6.3
org.jetbrains.kotlin:kotlin-reflect:1.3.71
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.71
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.71
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.71
org.jetbrains.kotlin:kotlin-stdlib:1.3.71
org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.3
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.5
org.jetbrains:annotations:13.0
org.junit.platform:junit-platform-commons:1.6.0
org.junit.platform:junit-platform-engine:1.6.0
org.junit:junit-bom:5.6.0
org.opentest4j:opentest4j:1.2.0
org.slf4j:slf4j-api:2.0.0-alpha1
org.slf4j:slf4j-simple:2.0.0-alpha1
org.spekframework.spek2:spek-dsl-jvm:2.0.10
org.spekframework.spek2:spek-runner-junit5:2.0.10
org.spekframework.spek2:spek-runtime-jvm:2.0.10

View File

@@ -36,8 +36,8 @@ let
concatStringsSep; concatStringsSep;
inherit (stdenv.lib) inherit (stdenv.lib)
versionOlder unique mapAttrs last concatMapStringsSep removeSuffix versionOlder unique mapAttrs mapAttrsToList last concatMapStringsSep
optionalString groupBy' readFile hasSuffix; removeSuffix optionalString groupBy' readFile hasSuffix;
mkDep = depSpec: stdenv.mkDerivation { mkDep = depSpec: stdenv.mkDerivation {
inherit (depSpec) name; inherit (depSpec) name;
@@ -230,7 +230,7 @@ let
}; };
mkProjectEnv = projectSpec: { mkProjectEnv = projectSpec: {
inherit (projectSpec) name version; inherit (projectSpec) name path version;
initScript = mkInitScript projectSpec; initScript = mkInitScript projectSpec;
gradle = args.gradlePackage or mkGradle projectSpec.gradle; gradle = args.gradlePackage or mkGradle projectSpec.gradle;
}; };
@@ -243,6 +243,23 @@ let
pname = args.pname or projectEnv.name; pname = args.pname or projectEnv.name;
version = args.version or projectEnv.version; version = args.version or projectEnv.version;
buildProject = env: flags: ''
gradle --offline --no-daemon --no-build-cache \
--info --full-stacktrace --warning-mode=all \
${optionalString enableParallelBuilding "--parallel"} \
${optionalString enableDebug "-Dorg.gradle.debug=true"} \
--init-script ${env.initScript} \
${optionalString (env.path != "") ''-p "${env.path}"''} \
${concatStringsSep " " flags}
'';
buildIncludedProjects =
concatStringsSep "\n" (mapAttrsToList
(_: env: buildProject env [ "build" ])
(removeAttrs gradleEnv [ "" ]));
buildRootProject = buildProject projectEnv gradleFlags;
in stdenv.mkDerivation (args // { in stdenv.mkDerivation (args // {
inherit pname version; inherit pname version;
@@ -260,13 +277,9 @@ in stdenv.mkDerivation (args // {
mkdir -p $TMPHOME/init.d mkdir -p $TMPHOME/init.d
cp ${projectEnv.initScript} $TMPHOME/init.d cp ${projectEnv.initScript} $TMPHOME/init.d
env \ export "GRADLE_USER_HOME=$TMPHOME"
"GRADLE_USER_HOME=$TMPHOME" \ ${buildIncludedProjects}
gradle --offline --no-daemon --no-build-cache \ ${buildRootProject}
--info --full-stacktrace --warning-mode=all \
${optionalString enableParallelBuilding "--parallel"} \
${optionalString enableDebug "-Dorg.gradle.debug=true"} \
${concatStringsSep " " gradleFlags}
) )
runHook postBuild runHook postBuild

View File

@@ -36,12 +36,11 @@ allprojects {
tasks.register("lock") { tasks.register("lock") {
doFirst { doFirst {
assert(gradle.startParameter.isWriteDependencyLocks) assert(gradle.startParameter.isWriteDependencyLocks)
file("buildscript-gradle.lockfile").delete()
file("gradle.lockfile").delete()
} }
doLast { doLast {
sourceSets.all { configurations.matching { it.isCanBeResolved}.all { resolve() }
configurations[compileClasspathConfigurationName].resolve()
configurations[runtimeClasspathConfigurationName].resolve()
}
} }
} }
} }
@@ -50,7 +49,7 @@ allprojects {
tasks { tasks {
wrapper { wrapper {
gradleVersion = "6.3" gradleVersion = "6.8-milestone-3"
distributionType = Wrapper.DistributionType.ALL distributionType = Wrapper.DistributionType.ALL
} }
} }

View File

@@ -3,7 +3,7 @@
with pkgs; with pkgs;
let let
buildGradle = pkgs.callPackage ./gradle-env.nix {}; buildGradle = callPackage ./gradle-env.nix {};
gradle2nix = buildGradle { gradle2nix = buildGradle {
envSpec = ./gradle-env.json; envSpec = ./gradle-env.json;

View File

@@ -0,0 +1,12 @@
plugins {
java
}
repositories {
maven { url = uri("http://localhost:9999") }
}
dependencies {
implementation(platform("io.micrometer:micrometer-bom:1.5.1"))
implementation("io.micrometer:micrometer-core")
}

View File

@@ -0,0 +1,11 @@
plugins {
id "java"
}
repositories {
maven { url = uri("http://localhost:9999") }
}
dependencies {
implementation "org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT"
}

View File

@@ -0,0 +1,11 @@
plugins {
java
}
repositories {
maven { url = uri("http://localhost:9999") }
}
dependencies {
"implementation"("org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT")
}

View File

@@ -3,10 +3,9 @@ plugins {
} }
repositories { repositories {
mavenCentral() maven { url = uri("http://localhost:9999") }
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
} }
dependencies { dependencies {
implementation "com.squareup.okio:okio:2.5.0-SNAPSHOT" implementation "org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT"
} }

View File

@@ -3,10 +3,9 @@ plugins {
} }
repositories { repositories {
mavenCentral() maven { url = uri("http://localhost:9999") }
maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") }
} }
dependencies { dependencies {
"implementation"("com.squareup.okio:okio:2.5.0-SNAPSHOT") "implementation"("org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT")
} }

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
~ Copyright 2020 the original author or authors.
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<metadata modelVersion="1.0.0">
<groupId>com.github.anuken</groupId>
<artifactId>packr</artifactId>
<version>-packr-1.2-g034efe5-114</version>
<versioning>
<snapshot>
<timestamp>packr-1.2-g034efe5</timestamp>
<buildNumber>114</buildNumber>
</snapshot>
</versioning>
</metadata>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.anuken</groupId>
<artifactId>packr</artifactId>
<version>-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.zeroturnaround</groupId>
<artifactId>zt-zip</artifactId>
<version>1.10</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.eclipsesource.minimal-json</groupId>
<artifactId>minimal-json</artifactId>
<version>0.9.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.lexicalscope.jewelcli</groupId>
<artifactId>jewelcli</artifactId>
<version>0.8.9</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.6</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
~ Copyright 2020 the original author or authors.
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<metadata modelVersion="1.0.0">
<groupId>com.github.anuken</groupId>
<artifactId>packr</artifactId>
<versioning>
<release>packr-1.2</release>
<versions>
<version>packr-1.2</version>
</versions>
</versioning>
</metadata>

View File

@@ -0,0 +1,3 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Thu Sep 24 11:23:49 PDT 2020
micrometer-bom-1.5.1.pom>maven-public=

View File

@@ -0,0 +1,174 @@
cp <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-bom</artifactId>
<version>1.5.1</version>
<packaging>pom</packaging>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-jersey2</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-appoptics</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-atlas</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-azure-monitor</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-cloudwatch</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-cloudwatch2</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-datadog</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-dynatrace</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-elastic</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-ganglia</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-graphite</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-humio</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-influx</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-jmx</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-kairos</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-new-relic</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-opentsdb</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-signalfx</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-stackdriver</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-statsd</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-wavefront</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-test</artifactId>
<version>1.5.1</version>
</dependency>
</dependencies>
</dependencyManagement>
<name>micrometer-bom</name>
<description>Micrometer BOM (Bill of Materials) for managing Micrometer artifact versions</description>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<properties>
<nebula_Manifest_Version>1.0</nebula_Manifest_Version>
<nebula_Implementation_Title>io.micrometer#micrometer-bom;1.5.1</nebula_Implementation_Title>
<nebula_Implementation_Version>1.5.1</nebula_Implementation_Version>
<nebula_Built_Status>release</nebula_Built_Status>
<nebula_Built_By>circleci</nebula_Built_By>
<nebula_Built_OS>Linux</nebula_Built_OS>
<nebula_Build_Date>2020-05-08_16:43:24</nebula_Build_Date>
<nebula_Gradle_Version>6.4</nebula_Gradle_Version>
<nebula_Module_Source>/micrometer-bom</nebula_Module_Source>
<nebula_Module_Origin>git@github.com:micrometer-metrics/micrometer.git</nebula_Module_Origin>
<nebula_Change>5984c10</nebula_Change>
<nebula_Branch>5984c10fc12b781652e27a9ea95c439f96e73cf8</nebula_Branch>
<nebula_Build_Host>82db0d896427</nebula_Build_Host>
<nebula_Build_Job>LOCAL</nebula_Build_Job>
<nebula_Build_Number>LOCAL</nebula_Build_Number>
<nebula_Build_Id>LOCAL</nebula_Build_Id>
<nebula_Created_By>14.0.1+7 (Oracle Corporation)</nebula_Created_By>
<nebula_Build_Java_Version>14.0.1</nebula_Build_Java_Version>
<nebula_Module_Owner>tludwig@vmware.com</nebula_Module_Owner>
<nebula_Module_Email>tludwig@vmware.com</nebula_Module_Email>
</properties>
<url>https://github.com/micrometer-metrics/micrometer</url>
<scm>
<url>git@github.com:micrometer-metrics/micrometer.git</url>
</scm>
<developers>
<developer>
<id>shakuzen</id>
<name>Tommy Ludwig</name>
<email>tludwig@vmware.com</email>
</developer>
</developers>
</project>

View File

@@ -0,0 +1 @@
fb57aac12f2370e7115ab8af5265322397cae49e

View File

@@ -0,0 +1,4 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Sat Nov 21 19:26:36 PST 2020
micrometer-core-1.5.1.jar>central=
micrometer-core-1.5.1.pom>central=

View File

@@ -0,0 +1 @@
f58ddf32310729011f6c2171fbe1a085b4336b2f

View File

@@ -0,0 +1,239 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
<version>1.5.1</version>
<dependencies>
<dependency>
<groupId>org.hdrhistogram</groupId>
<artifactId>HdrHistogram</artifactId>
<version>2.1.12</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.latencyutils</groupId>
<artifactId>LatencyUtils</artifactId>
<version>2.0.3</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<artifactId>HdrHistogram</artifactId>
<groupId>org.hdrhistogram</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.2</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>4.0.7</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>29.0-jre</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.8.2</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.6</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>javax.cache</groupId>
<artifactId>cache-api</artifactId>
<version>1.1.1</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
<version>4.0.1</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>6.0.0.Alpha5</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.4.28.v20200408</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
<version>9.4.28.v20200408</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>8.5.54</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
<version>4.1.4</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-core</artifactId>
<version>1.5.12</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.13.2</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
<version>3.3.5.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty</artifactId>
<version>0.9.7.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.14</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.5.0</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.3</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq</artifactId>
<version>3.13.1</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.5.0</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams</artifactId>
<version>2.5.0</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
</dependencies>
<name>micrometer-core</name>
<description>Application monitoring instrumentation facade</description>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<properties>
<nebula_Manifest_Version>1.0</nebula_Manifest_Version>
<nebula_Implementation_Title>io.micrometer#micrometer-core;1.5.1</nebula_Implementation_Title>
<nebula_Implementation_Version>1.5.1</nebula_Implementation_Version>
<nebula_Built_Status>integration</nebula_Built_Status>
<nebula_Built_By>circleci</nebula_Built_By>
<nebula_Built_OS>Linux</nebula_Built_OS>
<nebula_Build_Date>2020-05-08_16:43:25</nebula_Build_Date>
<nebula_Gradle_Version>6.4</nebula_Gradle_Version>
<nebula_Module_Source>/micrometer-core</nebula_Module_Source>
<nebula_Module_Origin>git@github.com:micrometer-metrics/micrometer.git</nebula_Module_Origin>
<nebula_Change>5984c10</nebula_Change>
<nebula_Branch>5984c10fc12b781652e27a9ea95c439f96e73cf8</nebula_Branch>
<nebula_Build_Host>82db0d896427</nebula_Build_Host>
<nebula_Build_Job>LOCAL</nebula_Build_Job>
<nebula_Build_Number>LOCAL</nebula_Build_Number>
<nebula_Build_Id>LOCAL</nebula_Build_Id>
<nebula_Created_By>14.0.1+7 (Oracle Corporation)</nebula_Created_By>
<nebula_Build_Java_Version>14.0.1</nebula_Build_Java_Version>
<nebula_Module_Owner>tludwig@vmware.com</nebula_Module_Owner>
<nebula_Module_Email>tludwig@vmware.com</nebula_Module_Email>
<nebula_X_Compile_Target_JDK>14</nebula_X_Compile_Target_JDK>
<nebula_X_Compile_Source_JDK>14</nebula_X_Compile_Source_JDK>
</properties>
<url>https://github.com/micrometer-metrics/micrometer</url>
<scm>
<url>git@github.com:micrometer-metrics/micrometer.git</url>
</scm>
<developers>
<developer>
<id>shakuzen</id>
<name>Tommy Ludwig</name>
<email>tludwig@vmware.com</email>
</developer>
</developers>
</project>

View File

@@ -0,0 +1 @@
e68ba4ca00f195e4aa6a5ccd78feef2d24c578ca

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<metadata>
<groupId>org.apache</groupId>
<artifactId>test-SNAPSHOT1</artifactId>
<version>2.0.0-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20070310.181613</timestamp>
<buildNumber>3</buildNumber>
</snapshot>
<lastUpdated>20070310181754</lastUpdated>
</versioning>
</metadata>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache</groupId>
<artifactId>test-SNAPSHOT1</artifactId>
<name>Test Module for Ivy M2 parsing</name>
<version>2.0.0-SNAPSHOT</version>
</project>

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<metadata>
<groupId>org.apache</groupId>
<artifactId>test-SNAPSHOT1</artifactId>
<version>2.0.2-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20070310.181613</timestamp>
<buildNumber>3</buildNumber>
</snapshot>
<lastUpdated>20070310181754</lastUpdated>
</versioning>
</metadata>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache</groupId>
<artifactId>test-SNAPSHOT1</artifactId>
<name>Test Module for Ivy M2 parsing</name>
<version>2.0.2-SNAPSHOT</version>
</project>

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<metadata>
<groupId>org.apache</groupId>
<artifactId>test-SNAPSHOT1</artifactId>
<version>2.0.2-SNAPSHOT</version>
<versioning>
<versions>
<version>2.0.0-SNAPSHOT</version>
<version>2.0.2-SNAPSHOT</version>
</versions>
<lastUpdated>20070310181754</lastUpdated>
</versioning>
</metadata>

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<metadata>
<groupId>org.apache</groupId>
<artifactId>test-SNAPSHOT2</artifactId>
<version>2.0.2-SNAPSHOT</version>
<versioning>
<snapshot>
<buildNumber>3</buildNumber>
</snapshot>
<lastUpdated>20070310181754</lastUpdated>
</versioning>
</metadata>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache</groupId>
<artifactId>test-SNAPSHOT2</artifactId>
<name>Test Module for Ivy M2 parsing</name>
<version>2.0.2-SNAPSHOT</version>
</project>

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<metadata>
<groupId>org.apache</groupId>
<artifactId>test-SNAPSHOT2</artifactId>
<version>2.0.2-SNAPSHOT</version>
<versioning>
<versions>
<version>2.0.2-SNAPSHOT</version>
</versions>
<lastUpdated>20070310181754</lastUpdated>
</versioning>
</metadata>

View File

@@ -0,0 +1 @@
6eb7552156e0d517ae80cc2247be1427c8d90452

View File

@@ -0,0 +1,268 @@
<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.hdrhistogram</groupId>
<artifactId>HdrHistogram</artifactId>
<version>2.1.12</version>
<name>HdrHistogram</name>
<url>http://hdrhistogram.github.io/HdrHistogram/</url>
<description>
HdrHistogram supports the recording and analyzing sampled data value
counts across a configurable integer value range with configurable value
precision within the range. Value precision is expressed as the number of
significant digits in the value recording, and provides control over value
quantization behavior across the value range and the subsequent value
resolution at any given level.
</description>
<licenses>
<license>
<comments>
* This code was Written by Gil Tene of Azul Systems, and released to the
* public domain, as explained at http://creativecommons.org/publicdomain/zero/1.0/
</comments>
<name>Public Domain, per Creative Commons CC0</name>
<url>http://creativecommons.org/publicdomain/zero/1.0/</url>
</license>
<license>
<name>BSD-2-Clause</name>
<url>https://opensource.org/licenses/BSD-2-Clause</url>
</license>
</licenses>
<developers>
<developer>
<id>giltene</id>
<name>Gil Tene</name>
<url>https://github.com/giltene</url>
</developer>
</developers>
<scm>
<url>scm:git:git://github.com/HdrHistogram/HdrHistogram.git</url>
<connection>scm:git:git://github.com/HdrHistogram/HdrHistogram.git</connection>
<developerConnection>scm:git:git@github.com:HdrHistogram/HdrHistogram.git</developerConnection>
<tag>HdrHistogram-2.1.12</tag>
</scm>
<issueManagement>
<url>https://github.com/HdrHistogram/HdrHistogram/issues</url>
<system>GitHub Issues</system>
</issueManagement>
<packaging>bundle</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<version.template.file>src/main/java/org/HdrHistogram/Version.java.template</version.template.file>
<version.file>src/main/java/org/HdrHistogram/Version.java</version.file>
<junit.version>4.12</junit.version>
<junit.jupiter.version>5.5.2</junit.jupiter.version>
<junit.vintage.version>5.5.2</junit.vintage.version>
</properties>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.5.3</version>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<inherited>true</inherited>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.0-M1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</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-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<enableAssertions>false</enableAssertions>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<useReleaseProfile>false</useReleaseProfile>
<releaseProfiles>release</releaseProfiles>
<goals>deploy</goals>
</configuration>
</plugin>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>maven-replacer-plugin</artifactId>
<version>1.4.0</version>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<file>${version.template.file}</file>
<outputFile>${version.file}</outputFile>
<replacements>
<replacement>
<token>\$BUILD_TIME\$</token>
<value>${maven.build.timestamp}</value>
</replacement>
<replacement>
<token>\$VERSION\$</token>
<value>${project.version}</value>
</replacement>
</replacements>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-installed</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>${project.packaging}</type>
<destFileName>HdrHistogram.jar</destFileName>
</artifactItem>
</artifactItems>
<outputDirectory>${project.basedir}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>${junit.vintage.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1 @@
9797702ee3e52e4be6bfbbc9fd20ac5447e7a541

View File

@@ -0,0 +1,4 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Sat Nov 21 19:26:36 PST 2020
HdrHistogram-2.1.12.jar>central=
HdrHistogram-2.1.12.pom>central=

View File

@@ -0,0 +1 @@
769c0b82cb2421c8256300e907298a9410a2a3d3

View File

@@ -0,0 +1,198 @@
<?xml version="1.0" encoding="UTF-8"?>
<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>
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>
<groupId>org.latencyutils</groupId>
<artifactId>LatencyUtils</artifactId>
<version>2.0.3</version>
<name>LatencyUtils</name>
<url>http://latencyutils.github.io/LatencyUtils/</url>
<description>
LatencyUtils is a package that provides latency recording and reporting utilities.
</description>
<licenses>
<license>
<comments>
* This code was Written by Gil Tene of Azul Systems, and released to the
* public domain, as explained at http://creativecommons.org/publicdomain/zero/1.0/
</comments>
<name>Public Domain, per Creative Commons CC0</name>
<url>http://creativecommons.org/publicdomain/zero/1.0/</url>
</license>
</licenses>
<developers>
<developer>
<id>giltene</id>
<name>Gil Tene</name>
<url>https://github.com/giltene</url>
</developer>
</developers>
<scm>
<url>scm:git:git://github.com/LatencyUtils/LatencyUtils.git</url>
<connection>scm:git:git://github.com/LatencyUtils/LatencyUtils.git</connection>
<developerConnection>scm:git:git@github.com:LatencyUtils/LatencyUtils.git</developerConnection>
<tag>HEAD</tag>
</scm>
<issueManagement>
<url>https://github.com/LatencyUtils/LatencyUtils/issues</url>
<system>GitHub Issues</system>
</issueManagement>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</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-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<enableAssertions>false</enableAssertions>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5</version>
<configuration>
<arguments>-Dgpg.passphrase=${gpg.passphrase}</arguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-installed</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>${project.packaging}</type>
<destFileName>LatencyUtils.jar</destFileName>
</artifactItem>
</artifactItems>
<outputDirectory>${project.basedir}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>release-sign-artifacts</id>
<activation>
<property>
<name>performRelease</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.4</version>
<configuration>
<passphrase>${gpg.passphrase}</passphrase>
</configuration>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hdrhistogram</groupId>
<artifactId>HdrHistogram</artifactId>
<version>2.1.8</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1 @@
5baec26b6f9e5b17fdd200fc20af85eead4287c4

View File

@@ -0,0 +1,6 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Sat Nov 21 19:26:36 PST 2020
LatencyUtils-2.0.3.jar>central=
LatencyUtils-2.0.3.jar>maven-public=
LatencyUtils-2.0.3.pom>maven-public=
LatencyUtils-2.0.3.pom>central=

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
# #
# with (import <nixpkgs> {}); # with (import <nixpkgs> {});
# let # let
# buildGradle = callPackage ./gradleEnv.nix {}; # buildGradle = callPackage ./gradle-env.nix {};
# in # in
# buildGradle { # buildGradle {
# envSpec = ./gradle-env.json; # envSpec = ./gradle-env.json;
@@ -36,8 +36,8 @@ let
concatStringsSep; concatStringsSep;
inherit (stdenv.lib) inherit (stdenv.lib)
versionOlder unique mapAttrs last concatMapStringsSep removeSuffix versionOlder unique mapAttrs mapAttrsToList last concatMapStringsSep
optionalString groupBy' readFile hasSuffix; removeSuffix optionalString groupBy' readFile hasSuffix;
mkDep = depSpec: stdenv.mkDerivation { mkDep = depSpec: stdenv.mkDerivation {
inherit (depSpec) name; inherit (depSpec) name;
@@ -230,7 +230,7 @@ let
}; };
mkProjectEnv = projectSpec: { mkProjectEnv = projectSpec: {
inherit (projectSpec) name version; inherit (projectSpec) name path version;
initScript = mkInitScript projectSpec; initScript = mkInitScript projectSpec;
gradle = args.gradlePackage or mkGradle projectSpec.gradle; gradle = args.gradlePackage or mkGradle projectSpec.gradle;
}; };
@@ -243,6 +243,23 @@ let
pname = args.pname or projectEnv.name; pname = args.pname or projectEnv.name;
version = args.version or projectEnv.version; version = args.version or projectEnv.version;
buildProject = env: flags: ''
gradle --offline --no-daemon --no-build-cache \
--info --full-stacktrace --warning-mode=all \
${optionalString enableParallelBuilding "--parallel"} \
${optionalString enableDebug "-Dorg.gradle.debug=true"} \
--init-script ${env.initScript} \
${optionalString (env.path != "") ''-p "${env.path}"''} \
${concatStringsSep " " flags}
'';
buildIncludedProjects =
concatStringsSep "\n" (mapAttrsToList
(_: env: buildProject env [ "build" ])
(removeAttrs gradleEnv [ "" ]));
buildRootProject = buildProject projectEnv gradleFlags;
in stdenv.mkDerivation (args // { in stdenv.mkDerivation (args // {
inherit pname version; inherit pname version;
@@ -254,14 +271,15 @@ in stdenv.mkDerivation (args // {
( (
set -x set -x
env \
"GRADLE_USER_HOME=$(mktemp -d)" \ # use the init script here
gradle --offline --no-daemon --no-build-cache \ TMPHOME=$(mktemp -d)
--info --full-stacktrace --warning-mode=all \ mkdir -p $TMPHOME/init.d
${optionalString enableParallelBuilding "--parallel"} \ cp ${projectEnv.initScript} $TMPHOME/init.d
${optionalString enableDebug "-Dorg.gradle.debug=true"} \
--init-script ${projectEnv.initScript} \ export "GRADLE_USER_HOME=$TMPHOME"
${concatStringsSep " " gradleFlags} ${buildIncludedProjects}
${buildRootProject}
) )
runHook postBuild runHook postBuild

Binary file not shown.

View File

@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-milestone-2-all.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

2
gradlew vendored
View File

@@ -82,6 +82,7 @@ esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM. # Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
@@ -129,6 +130,7 @@ fi
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"` APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"` JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath # We build the pattern for arguments to be converted via cygpath

25
gradlew.bat vendored
View File

@@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0 set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME% set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@@ -37,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1 %JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init if "%ERRORLEVEL%" == "0" goto execute
echo. echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -51,7 +54,7 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=% set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init if exist "%JAVA_EXE%" goto execute
echo. echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@@ -61,28 +64,14 @@ echo location of your Java installation.
goto fail goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute :execute
@rem Setup the command line @rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle @rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end :end
@rem End local scope for the variables with windows NT shell @rem End local scope for the variables with windows NT shell

13
model/gradle.lockfile Normal file
View File

@@ -0,0 +1,13 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.squareup.moshi:moshi:1.11.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.squareup.okio:okio:1.17.5=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
net.swiftzer.semver:semver:1.1.1=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-reflect:1.4.10=compileClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-common:1.4.10=compileClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.10=compileClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10=compileClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib:1.4.10=compileClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains:annotations:13.0=compileClasspath,testCompileClasspath,testRuntimeClasspath
empty=

View File

@@ -1,12 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.squareup.moshi:moshi:1.9.2
com.squareup.okio:okio:1.16.0
net.swiftzer.semver:semver:1.1.1
org.jetbrains.kotlin:kotlin-reflect:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.70
org.jetbrains.kotlin:kotlin-stdlib:1.3.70
org.jetbrains:annotations:13.0

View File

@@ -1,6 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.squareup.moshi:moshi:1.9.2
com.squareup.okio:okio:1.16.0
net.swiftzer.semver:semver:1.1.1

View File

@@ -1,12 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.squareup.moshi:moshi:1.9.2
com.squareup.okio:okio:1.16.0
net.swiftzer.semver:semver:1.1.1
org.jetbrains.kotlin:kotlin-reflect:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.70
org.jetbrains.kotlin:kotlin-stdlib:1.3.70
org.jetbrains:annotations:13.0

View File

@@ -1,12 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.squareup.moshi:moshi:1.9.2
com.squareup.okio:okio:1.16.0
net.swiftzer.semver:semver:1.1.1
org.jetbrains.kotlin:kotlin-reflect:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.70
org.jetbrains.kotlin:kotlin-stdlib:1.3.70
org.jetbrains:annotations:13.0

View File

@@ -1,10 +0,0 @@
# DO NOT MODIFY: Generated by Stutter plugin.
5.0
5.1.1
5.2.1
5.3.1
5.4.1
5.5.1
5.6.4
6.0.1
6.1

View File

@@ -1,17 +1,8 @@
# DO NOT MODIFY: Generated by Stutter plugin. # DO NOT MODIFY: Generated by Stutter plugin.
4.4.1 4.4.1
4.5.1
4.6
4.7
4.8.1
4.9
4.10.3 4.10.3
5.0 5.0
5.1.1
5.2.1
5.3.1
5.4.1
5.5.1
5.6.4 5.6.4
6.0.1 6.0.1
6.1 6.7.1
6.8-milestone-3

View File

@@ -47,6 +47,7 @@ dependencies {
compatTestImplementation(project(":model")) compatTestImplementation(project(":model"))
compatTestImplementation("io.strikt:strikt-core:latest.release") compatTestImplementation("io.strikt:strikt-core:latest.release")
compatTestImplementation("com.squareup.okio:okio:latest.release") compatTestImplementation("com.squareup.okio:okio:latest.release")
compatTestImplementation("io.javalin:javalin:latest.release")
} }
gradlePlugin { gradlePlugin {
@@ -65,6 +66,7 @@ kotlinDslPluginOptions {
} }
stutter { stutter {
isSparse = true
java(8) { java(8) {
compatibleRange("4.4") compatibleRange("4.4")
} }
@@ -79,6 +81,14 @@ tasks {
} }
withType<Test> { withType<Test> {
useJUnitPlatform() useJUnitPlatform {
includeEngines("junit-jupiter")
}
afterTest(KotlinClosure2<TestDescriptor, TestResult, Any>({ descriptor, result ->
// work around a bug in Gradle versions before 6.1, see https://github.com/junit-team/junit5/issues/2041
val test = descriptor as org.gradle.api.internal.tasks.testing.TestDescriptorInternal
println("[${test.classDisplayName}] > [${test.displayName}]: ${result.resultType}")
}))
} }
} }

View File

@@ -0,0 +1,36 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.github.gundy:semver4j:0.16.4=classpath
com.google.code.gson:gson:2.8.5=classpath
de.undercouch:gradle-download-task:4.0.2=classpath
org.antlr:antlr4-runtime:4.5.2-1=classpath
org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:1.4.2=classpath
org.gradle.kotlin:gradle-kotlin-dsl-plugins:1.4.2=classpath
org.jetbrains.intellij.deps:trove4j:1.0.20181211=classpath
org.jetbrains.kotlin:kotlin-android-extensions:1.4.10=classpath
org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.4.10=classpath
org.jetbrains.kotlin:kotlin-build-common:1.4.10=classpath
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.10=classpath
org.jetbrains.kotlin:kotlin-compiler-runner:1.4.10=classpath
org.jetbrains.kotlin:kotlin-daemon-client:1.4.10=classpath
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.4.10=classpath
org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.4.10=classpath
org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.4.10=classpath
org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10=classpath
org.jetbrains.kotlin:kotlin-reflect:1.4.10=classpath
org.jetbrains.kotlin:kotlin-sam-with-receiver:1.4.10=classpath
org.jetbrains.kotlin:kotlin-script-runtime:1.4.10=classpath
org.jetbrains.kotlin:kotlin-scripting-common:1.4.10=classpath
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.4.10=classpath
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.4.10=classpath
org.jetbrains.kotlin:kotlin-scripting-jvm:1.4.10=classpath
org.jetbrains.kotlin:kotlin-stdlib-common:1.4.10=classpath
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.10=classpath
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10=classpath
org.jetbrains.kotlin:kotlin-stdlib:1.4.10=classpath
org.jetbrains.kotlin:kotlin-util-io:1.4.10=classpath
org.jetbrains.kotlin:kotlin-util-klib:1.4.10=classpath
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7=classpath
org.jetbrains:annotations:13.0=classpath
empty=

69
plugin/gradle.lockfile Normal file
View File

@@ -0,0 +1,69 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.christophsturm:filepeek:0.1.2=compatTestRuntimeClasspath
com.squareup.moshi:moshi:1.11.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
com.squareup.okio:okio-metadata:2.9.0=compatTestImplementationDependenciesMetadata
com.squareup.okio:okio:1.17.5=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
com.squareup.okio:okio:2.9.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
dev.minutest:minutest:1.11.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
io.github.classgraph:classgraph:4.8.28=compatTestRuntimeClasspath
io.javalin:javalin:3.12.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
io.strikt:strikt-core:0.28.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
javax.servlet:javax.servlet-api:3.1.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
net.swiftzer.semver:semver:1.1.1=compatTestRuntimeClasspath,default,runtimeClasspath,testRuntimeClasspath
org.apache.ivy:ivy:2.5.0=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
org.apache.maven:maven-repository-metadata:3.6.3=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
org.apiguardian:apiguardian-api:1.1.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata
org.codehaus.plexus:plexus-utils:3.2.1=compileClasspath,default,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
org.eclipse.jetty.websocket:websocket-api:9.4.31.v20200723=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.eclipse.jetty.websocket:websocket-client:9.4.31.v20200723=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.eclipse.jetty.websocket:websocket-common:9.4.31.v20200723=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.eclipse.jetty.websocket:websocket-server:9.4.31.v20200723=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.eclipse.jetty.websocket:websocket-servlet:9.4.31.v20200723=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.eclipse.jetty:jetty-client:9.4.31.v20200723=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.eclipse.jetty:jetty-http:9.4.31.v20200723=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.eclipse.jetty:jetty-io:9.4.31.v20200723=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.eclipse.jetty:jetty-security:9.4.31.v20200723=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.eclipse.jetty:jetty-server:9.4.31.v20200723=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.eclipse.jetty:jetty-servlet:9.4.31.v20200723=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.eclipse.jetty:jetty-util:9.4.31.v20200723=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.eclipse.jetty:jetty-webapp:9.4.31.v20200723=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.eclipse.jetty:jetty-xml:9.4.31.v20200723=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.gradle:gradle-tooling-api:6.8-milestone-2=compileClasspath,compileOnly,compileOnlyDependenciesMetadata
org.jetbrains.intellij.deps:trove4j:1.0.20181211=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.10=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.4.10=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.4.10=kotlinCompilerPluginClasspath
org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.4.10=kotlinCompilerPluginClasspath
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.4.10=kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-reflect:1.4.10=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compileClasspath,compileOnly,compileOnlyDependenciesMetadata,embeddedKotlin,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-sam-with-receiver:1.4.10=kotlinCompilerPluginClasspath
org.jetbrains.kotlin:kotlin-script-runtime:1.4.10=kotlinCompilerClasspath,kotlinCompilerPluginClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-scripting-common:1.4.10=kotlinCompilerPluginClasspath
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.4.10=kotlinCompilerPluginClasspath
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.4.10=kotlinCompilerPluginClasspath
org.jetbrains.kotlin:kotlin-scripting-jvm:1.4.10=kotlinCompilerPluginClasspath
org.jetbrains.kotlin:kotlin-stdlib-common:1.4.10=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compileClasspath,compileOnly,compileOnlyDependenciesMetadata,embeddedKotlin,kotlinCompilerClasspath,kotlinCompilerPluginClasspath,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.10=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compileClasspath,compileOnly,compileOnlyDependenciesMetadata,embeddedKotlin,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compileClasspath,compileOnly,compileOnlyDependenciesMetadata,embeddedKotlin,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib:1.4.10=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compileClasspath,compileOnly,compileOnlyDependenciesMetadata,embeddedKotlin,kotlinCompilerClasspath,kotlinCompilerPluginClasspath,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-test-annotations-common:1.4.10=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.jetbrains.kotlin:kotlin-test-common:1.4.10=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.jetbrains.kotlin:kotlin-test-junit5:1.4.10=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.jetbrains.kotlin:kotlin-test:1.4.10=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.3.9=compatTestRuntimeClasspath
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7=kotlinCompilerPluginClasspath
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9=compatTestRuntimeClasspath
org.jetbrains:annotations:13.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compileClasspath,compileOnly,compileOnlyDependenciesMetadata,embeddedKotlin,kotlinCompilerClasspath,kotlinCompilerPluginClasspath,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
org.junit.jupiter:junit-jupiter-api:5.7.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata
org.junit.jupiter:junit-jupiter-engine:5.7.0=compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata
org.junit.jupiter:junit-jupiter-params:5.7.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
org.junit.platform:junit-platform-commons:1.7.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata
org.junit.platform:junit-platform-engine:1.7.0=compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata
org.junit.platform:junit-platform-launcher:1.7.0=compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata
org.junit:junit-bom:5.7.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata
org.opentest4j:opentest4j:1.2.0=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath,compatTestRuntimeOnlyDependenciesMetadata
org.slf4j:slf4j-api:1.7.28=compileClasspath,compileOnly,compileOnlyDependenciesMetadata
org.slf4j:slf4j-api:1.7.30=compatTestCompileClasspath,compatTestImplementationDependenciesMetadata,compatTestRuntimeClasspath
empty=annotationProcessor,apiDependenciesMetadata,archives,compatTestAnnotationProcessor,compatTestApiDependenciesMetadata,compatTestCompile,compatTestCompileOnly,compatTestCompileOnlyDependenciesMetadata,compatTestKotlinScriptDef,compatTestKotlinScriptDefExtensions,compatTestRuntime,compile,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,runtime,runtimeOnlyDependenciesMetadata,shadow,testAnnotationProcessor,testApiDependenciesMetadata,testCompile,testCompileOnly,testCompileOnlyDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions,testRuntime,testRuntimeOnlyDependenciesMetadata

View File

@@ -1,34 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.google.code.gson:gson:2.8.5
de.undercouch:gradle-download-task:4.0.2
org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:1.3.4
org.gradle.kotlin:plugins:1.3.4
org.jetbrains.intellij.deps:trove4j:1.0.20181211
org.jetbrains.kotlin:kotlin-android-extensions:1.3.70
org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.3.70
org.jetbrains.kotlin:kotlin-build-common:1.3.70
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.3.70
org.jetbrains.kotlin:kotlin-compiler-runner:1.3.70
org.jetbrains.kotlin:kotlin-daemon-client:1.3.70
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.3.70
org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.3.70
org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.3.70
org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.70
org.jetbrains.kotlin:kotlin-native-utils:1.3.70
org.jetbrains.kotlin:kotlin-reflect:1.3.70
org.jetbrains.kotlin:kotlin-sam-with-receiver:1.3.70
org.jetbrains.kotlin:kotlin-script-runtime:1.3.70
org.jetbrains.kotlin:kotlin-scripting-common:1.3.70
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.3.70
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.3.70
org.jetbrains.kotlin:kotlin-scripting-jvm:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.70
org.jetbrains.kotlin:kotlin-stdlib:1.3.70
org.jetbrains.kotlin:kotlin-util-io:1.3.70
org.jetbrains.kotlin:kotlin-util-klib:1.3.70
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.2.1
org.jetbrains:annotations:13.0

View File

@@ -1,24 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.christophsturm:filepeek:0.1.2
com.squareup.moshi:moshi:1.9.2
com.squareup.okio:okio:2.6.0
dev.minutest:minutest:1.11.0
io.strikt:strikt-core:0.25.0
org.apiguardian:apiguardian-api:1.1.0
org.jetbrains.kotlin:kotlin-reflect:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.70
org.jetbrains.kotlin:kotlin-stdlib:1.3.70
org.jetbrains.kotlin:kotlin-test-annotations-common:1.3.70
org.jetbrains.kotlin:kotlin-test-common:1.3.70
org.jetbrains.kotlin:kotlin-test-junit5:1.3.70
org.jetbrains.kotlin:kotlin-test:1.3.70
org.jetbrains:annotations:13.0
org.junit.jupiter:junit-jupiter-api:5.7.0-M1
org.junit.jupiter:junit-jupiter-params:5.7.0-M1
org.junit.platform:junit-platform-commons:1.7.0-M1
org.junit:junit-bom:5.7.0-M1
org.opentest4j:opentest4j:1.2.0

View File

@@ -1,30 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.christophsturm:filepeek:0.1.2
com.squareup.moshi:moshi:1.9.2
com.squareup.okio:okio:2.6.0
dev.minutest:minutest:1.11.0
io.github.classgraph:classgraph:4.8.28
io.strikt:strikt-core:0.25.0
net.swiftzer.semver:semver:1.1.1
org.apiguardian:apiguardian-api:1.1.0
org.jetbrains.kotlin:kotlin-reflect:1.3.71
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.71
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.71
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.71
org.jetbrains.kotlin:kotlin-stdlib:1.3.71
org.jetbrains.kotlin:kotlin-test-annotations-common:1.3.70
org.jetbrains.kotlin:kotlin-test-common:1.3.70
org.jetbrains.kotlin:kotlin-test-junit5:1.3.70
org.jetbrains.kotlin:kotlin-test:1.3.70
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.5
org.jetbrains:annotations:13.0
org.junit.jupiter:junit-jupiter-api:5.7.0-M1
org.junit.jupiter:junit-jupiter-engine:5.7.0-M1
org.junit.jupiter:junit-jupiter-params:5.7.0-M1
org.junit.platform:junit-platform-commons:1.7.0-M1
org.junit.platform:junit-platform-engine:1.7.0-M1
org.junit.platform:junit-platform-launcher:1.7.0-M1
org.junit:junit-bom:5.7.0-M1
org.opentest4j:opentest4j:1.2.0

View File

@@ -1,16 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.squareup.moshi:moshi:1.9.2
com.squareup.okio:okio:1.16.0
org.apache.ivy:ivy:2.5.0
org.apache.maven:maven-repository-metadata:3.6.3
org.codehaus.plexus:plexus-utils:3.2.1
org.gradle:gradle-tooling-api:6.3
org.jetbrains.kotlin:kotlin-reflect:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.70
org.jetbrains.kotlin:kotlin-stdlib:1.3.70
org.jetbrains:annotations:13.0
org.slf4j:slf4j-api:1.7.28

View File

@@ -1,9 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.squareup.moshi:moshi:1.9.2
com.squareup.okio:okio:1.16.0
net.swiftzer.semver:semver:1.1.1
org.apache.ivy:ivy:2.5.0
org.apache.maven:maven-repository-metadata:3.6.3
org.codehaus.plexus:plexus-utils:3.2.1

View File

@@ -1,14 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.squareup.moshi:moshi:1.9.2
com.squareup.okio:okio:1.16.0
org.apache.ivy:ivy:2.5.0
org.apache.maven:maven-repository-metadata:3.6.3
org.codehaus.plexus:plexus-utils:3.2.1
org.jetbrains.kotlin:kotlin-reflect:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.70
org.jetbrains.kotlin:kotlin-stdlib:1.3.70
org.jetbrains:annotations:13.0

View File

@@ -1,15 +0,0 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.squareup.moshi:moshi:1.9.2
com.squareup.okio:okio:1.16.0
net.swiftzer.semver:semver:1.1.1
org.apache.ivy:ivy:2.5.0
org.apache.maven:maven-repository-metadata:3.6.3
org.codehaus.plexus:plexus-utils:3.2.1
org.jetbrains.kotlin:kotlin-reflect:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.70
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.70
org.jetbrains.kotlin:kotlin-stdlib:1.3.70
org.jetbrains:annotations:13.0

View File

@@ -1,6 +1,7 @@
package org.nixos.gradle2nix package org.nixos.gradle2nix
import dev.minutest.Tests import dev.minutest.Tests
import dev.minutest.experimental.minus
import dev.minutest.junit.JUnit5Minutests import dev.minutest.junit.JUnit5Minutests
import dev.minutest.rootContext import dev.minutest.rootContext
import org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.BINTRAY_JCENTER_URL import org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.BINTRAY_JCENTER_URL
@@ -18,7 +19,7 @@ import strikt.assertions.startsWith
class BasicTest : JUnit5Minutests { class BasicTest : JUnit5Minutests {
@Tests @Tests
fun tests() = rootContext<Fixture>("basic tests") { fun tests() = rootContext("basic tests") {
withFixture("basic/basic-java-project") { withFixture("basic/basic-java-project") {
test("builds basic java project") { test("builds basic java project") {
expectThat(build()) { expectThat(build()) {
@@ -57,12 +58,13 @@ class BasicTest : JUnit5Minutests {
} }
withFixture("basic/basic-kotlin-project") { withFixture("basic/basic-kotlin-project") {
test("excludes embedded kotlin repo") { GRADLE_MIN("4.9") - test("excludes embedded kotlin repo") {
expectThat(build()) { expectThat(build()) {
get("all dependencies") { get("all dependencies") {
pluginDependencies + pluginDependencies +
rootProject.buildscriptDependencies + rootProject.buildscriptDependencies +
rootProject.projectDependencies rootProject.projectDependencies
}.flatMap { it.urls }.all { not { startsWith("file:") } } }.flatMap { it.urls }.all { not { startsWith("file:") } }
} }
} }

View File

@@ -1,67 +1,99 @@
package org.nixos.gradle2nix package org.nixos.gradle2nix
import dev.minutest.Tests import dev.minutest.Tests
import dev.minutest.experimental.minus
import dev.minutest.junit.JUnit5Minutests import dev.minutest.junit.JUnit5Minutests
import dev.minutest.rootContext import dev.minutest.rootContext
import strikt.api.expectThat import strikt.api.expectThat
import strikt.assertions.all import strikt.assertions.all
import strikt.assertions.contains
import strikt.assertions.containsExactly import strikt.assertions.containsExactly
import strikt.assertions.filter import strikt.assertions.filter
import strikt.assertions.isEqualTo import strikt.assertions.isEqualTo
import strikt.assertions.isNotEqualTo
import strikt.assertions.isNotNull import strikt.assertions.isNotNull
import strikt.assertions.single import strikt.assertions.isNull
import strikt.assertions.startsWith
class DependencyTest : JUnit5Minutests { class DependencyTest : JUnit5Minutests {
@Tests @Tests
fun tests() = rootContext<Fixture>("dependency tests") { fun tests() = rootContext("dependency tests") {
withFixture("dependency/classifier") { withRepository("m2") {
test("resolves dependency with classifier") {
expectThat(build()) { withFixture("dependency/classifier") {
get("root project dependencies") { rootProject.projectDependencies }.ids.containsExactly( test("resolves dependency with classifier") {
"com.badlogicgames.gdx:gdx-parent:1.9.9@pom", expectThat(build()) {
"com.badlogicgames.gdx:gdx-platform:1.9.9:natives-desktop@jar", get("root project dependencies") { rootProject.projectDependencies }.ids.containsExactly(
"com.badlogicgames.gdx:gdx-platform:1.9.9@pom", "com.badlogicgames.gdx:gdx-parent:1.9.9@pom",
"org.sonatype.oss:oss-parent:5@pom" "com.badlogicgames.gdx:gdx-platform:1.9.9:natives-desktop@jar",
) "com.badlogicgames.gdx:gdx-platform:1.9.9@pom",
"org.sonatype.oss:oss-parent:5@pom"
)
}
} }
} }
}
withFixture("dependency/dynamic-snapshot") { withFixture("dependency/maven-bom") {
test("resolves snapshot dependency with dynamic version") { GRADLE_MIN("5.0") - test("resolves dependencies from maven bom platform") {
expectThat(build()) { expectThat(build()) {
get("root project dependencies") { rootProject.projectDependencies } get("root project dependencies") { rootProject.projectDependencies }
.filter { it.id.name == "packr" } .ids
.all { .containsExactly(
get("id.version") { id.version }.isEqualTo("-SNAPSHOT") "io.micrometer:micrometer-bom:1.5.1@pom",
get("timestamp") { timestamp }.isNotNull() "io.micrometer:micrometer-core:1.5.1@jar",
get("build") { build }.isNotNull() "io.micrometer:micrometer-core:1.5.1@pom",
} "org.hdrhistogram:HdrHistogram:2.1.12@jar",
} "org.hdrhistogram:HdrHistogram:2.1.12@pom"
}
}
withFixture("dependency/snapshot") {
test("resolves snapshot dependency") {
expectThat(build()) {
get("root project dependencies") { rootProject.projectDependencies }
.filter { it.id.name == "okio" }
.and {
ids.containsExactly(
"com.squareup.okio:okio:2.5.0-SNAPSHOT@jar",
"com.squareup.okio:okio:2.5.0-SNAPSHOT@module",
"com.squareup.okio:okio:2.5.0-SNAPSHOT@pom"
) )
all { }
}
}
withFixture("dependency/snapshot") {
test("resolves snapshot dependency") {
expectThat(build()) {
get("root project dependencies") { rootProject.projectDependencies }
.and {
ids.containsExactly(
"org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT@jar",
"org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT@pom"
)
all {
get("timestamp") { timestamp }.isNull()
get("build") { build }.isNotNull()
}
}
}
}
}
withFixture("dependency/snapshot-dynamic") {
test("resolves snapshot dependency with dynamic version") {
expectThat(build()) {
get("root project dependencies") { rootProject.projectDependencies }
.and {
ids.containsExactly(
"org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT@jar",
"org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT@pom"
)
all {
get("timestamp") { timestamp }.isEqualTo("20070310.181613")
get("build") { build }.isEqualTo(3)
}
}
}
}
}
withFixture("dependency/snapshot-redirect") {
test("resolves snapshot dependency with redirect") {
expectThat(build()) {
get("root project dependencies") { rootProject.projectDependencies }
.filter { it.id.name == "packr" }
.all {
get("id.version") { id.version }.isEqualTo("-SNAPSHOT")
get("timestamp") { timestamp }.isNotNull() get("timestamp") { timestamp }.isNotNull()
get("build") { build }.isNotNull() get("build") { build }.isNotNull()
get("urls") { urls }.single().startsWith(SONATYPE_OSS_URL)
} }
} }
} }
} }
} }

View File

@@ -12,7 +12,7 @@ import strikt.assertions.startsWith
class IvyTest : JUnit5Minutests { class IvyTest : JUnit5Minutests {
@Tests @Tests
fun tests() = rootContext<Fixture>("ivy tests") { fun tests() = rootContext("ivy tests") {
withFixture("ivy/basic") { withFixture("ivy/basic") {
test("resolves ivy dependencies") { test("resolves ivy dependencies") {
expectThat(build()) { expectThat(build()) {

View File

@@ -8,7 +8,7 @@ import strikt.assertions.contains
class PluginTest : JUnit5Minutests { class PluginTest : JUnit5Minutests {
@Tests @Tests
fun tests() = rootContext<Fixture>("plugin tests") { fun tests() = rootContext("plugin tests") {
withFixture("plugin/resolves-from-default-repo") { withFixture("plugin/resolves-from-default-repo") {
test("resolves plugin from default repo") { test("resolves plugin from default repo") {
expectThat(build()) { expectThat(build()) {

View File

@@ -17,7 +17,7 @@ import strikt.assertions.startsWith
class SubprojectsTest : JUnit5Minutests { class SubprojectsTest : JUnit5Minutests {
@Tests @Tests
fun tests() = rootContext<Fixture>("subproject tests") { fun tests() = rootContext("subproject tests") {
withFixture("subprojects/multi-module") { withFixture("subprojects/multi-module") {
test("builds multi-module project") { test("builds multi-module project") {
expectThat(build().rootProject) { expectThat(build().rootProject) {

View File

@@ -3,7 +3,12 @@ package org.nixos.gradle2nix
import com.squareup.moshi.Moshi import com.squareup.moshi.Moshi
import dev.minutest.ContextBuilder import dev.minutest.ContextBuilder
import dev.minutest.MinutestFixture import dev.minutest.MinutestFixture
import dev.minutest.Node
import dev.minutest.TestContextBuilder import dev.minutest.TestContextBuilder
import dev.minutest.closeableFixture
import dev.minutest.experimental.SKIP
import dev.minutest.experimental.TransformingAnnotation
import io.javalin.Javalin
import okio.buffer import okio.buffer
import okio.source import okio.source
import org.gradle.internal.classpath.DefaultClassPath import org.gradle.internal.classpath.DefaultClassPath
@@ -13,26 +18,29 @@ import org.gradle.util.GradleVersion
import org.junit.jupiter.api.Assumptions.assumeTrue import org.junit.jupiter.api.Assumptions.assumeTrue
import strikt.api.Assertion import strikt.api.Assertion
import strikt.assertions.map import strikt.assertions.map
import java.io.Closeable
import java.io.File import java.io.File
import java.io.StringWriter import java.io.StringWriter
import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.Paths import java.nio.file.Paths
import kotlin.streams.toList
const val SONATYPE_OSS_URL = "https://oss.sonatype.org/content/repositories/snapshots/"
private val moshi = Moshi.Builder().build() private val moshi = Moshi.Builder().build()
private val gradleVersion = GradleVersion.version(System.getProperty("compat.gradle.version")) val gradleVersion = System.getProperty("compat.gradle.version")
?.let(GradleVersion::version)
?: GradleVersion.current()
val GRADLE_4_5 = GradleVersion.version("4.5") val GRADLE_4_5 = GradleVersion.version("4.5")
fun GRADLE_MIN(version: String) = object : TransformingAnnotation() {
override fun <F> transform(node: Node<F>): Node<F> =
if (gradleVersion < GradleVersion.version(version)) SKIP.transform(node) else node
}
private fun File.initscript() = resolve("init.gradle").also { private fun File.initscript() = resolve("init.gradle").also {
it.writer().use { out -> it.writer().use { out ->
val classpath = DefaultClassPath.of(PluginUnderTestMetadataReading.readImplementationClasspath()) val classpath = DefaultClassPath.of(PluginUnderTestMetadataReading.readImplementationClasspath())
.asFiles.joinToString { n -> "'$n'" } .asFiles.joinToString { n -> "'$n'" }
out.appendln(""" out.append("""
initscript { initscript {
dependencies { dependencies {
classpath files($classpath) classpath files($classpath)
@@ -40,6 +48,7 @@ private fun File.initscript() = resolve("init.gradle").also {
} }
apply plugin: org.nixos.gradle2nix.Gradle2NixPlugin apply plugin: org.nixos.gradle2nix.Gradle2NixPlugin
""".trimIndent()) """.trimIndent())
} }
} }
@@ -78,6 +87,9 @@ private fun File.build(
System.err.print(log) System.err.print(log)
throw error throw error
} }
print(log)
return resolve("build/nix/model.json").run { return resolve("build/nix/model.json").run {
println(readText()) println(readText())
source().buffer().use { src -> source().buffer().use { src ->
@@ -89,44 +101,96 @@ private fun File.build(
val <T : Iterable<Artifact>> Assertion.Builder<T>.ids: Assertion.Builder<Iterable<String>> val <T : Iterable<Artifact>> Assertion.Builder<T>.ids: Assertion.Builder<Iterable<String>>
get() = map { it.id.toString() } get() = map { it.id.toString() }
@MinutestFixture private fun File.parents() = generateSequence(parentFile) { it.parentFile }
class Fixture(val testRoots: List<Path>)
@MinutestFixture @MinutestFixture
class ProjectFixture(val testRoot: Path) { class RepositoryFixture(private val server: Javalin) : Closeable {
override fun close() {
server.stop()
}
}
@MinutestFixture
class TestFixture(val name: String, val source: File) : Closeable {
val dest: File
init {
require(source.exists() && source.isDirectory) {
"$name: Test fixture not found: $source}"
}
dest = createTempDir(prefix = name, suffix = "")
}
override fun close() {
dest.deleteRecursively()
}
}
@MinutestFixture
class ProjectFixture(private val parent: TestFixture, private val source: File) : Closeable {
private val dest: File
init {
require(source.exists() && source.isDirectory && parent.source in source.parents()) {
"${parent.name}: Test project not found: $source"
}
val rel = source.toRelativeString(parent.source)
dest = parent.dest.resolve(rel)
}
fun copy() {
source.copyRecursively(dest, true)
}
fun build( fun build(
configurations: List<String> = emptyList(), configurations: List<String> = emptyList(),
subprojects: List<String> = emptyList() subprojects: List<String> = emptyList()
) = testRoot.toFile().build(configurations, subprojects) ) = dest.build(configurations, subprojects)
override fun close() {
dest.deleteRecursively()
}
} }
fun ContextBuilder<Fixture>.withFixture( fun ContextBuilder<*>.withRepository(
name: String, name: String,
block: TestContextBuilder<Fixture, ProjectFixture>.() -> Unit block: TestContextBuilder<*, RepositoryFixture>.() -> Unit
) = context(name) { ) = derivedContext<RepositoryFixture>("with repository: ${name}") {
val url = checkNotNull(Thread.currentThread().contextClassLoader.getResource(name)?.toURI()) { closeableFixture {
"$name: No test fixture found" RepositoryFixture(Javalin.create { config ->
} config.addStaticFiles("/repositories/$name")
val fixtureRoot = Paths.get(url) }.start(9999))
val dest = createTempDir("gradle2nix").toPath()
val src = checkNotNull(fixtureRoot.takeIf(Files::exists)) {
"$name: Test fixture not found: $fixtureRoot}"
}
src.toFile().copyRecursively(dest.toFile())
val testRoots = Files.list(dest).filter { Files.isDirectory(it) }.toList()
fixture {
Fixture(testRoots)
} }
afterAll { block()
dest.toFile().deleteRecursively() }
}
testRoots.forEach { testRoot -> fun ContextBuilder<*>.withFixture(
derivedContext<ProjectFixture>(testRoot.fileName.toString()) { name: String,
deriveFixture { ProjectFixture(testRoot) } block: TestContextBuilder<*, ProjectFixture>.() -> Unit
block() ) {
derivedContext<TestFixture>(name) {
val url = checkNotNull(Thread.currentThread().contextClassLoader.getResource(name)?.toURI()) {
"$name: No test fixture found"
}
val fixtureRoot = Paths.get(url).toFile().absoluteFile
deriveFixture {
TestFixture(name, fixtureRoot)
}
val testRoots = fixtureRoot.listFiles()!!
.filter { it.isDirectory }
.map { it.absoluteFile }
.toList()
testRoots.forEach { testRoot ->
derivedContext<ProjectFixture>(testRoot.name) {
deriveFixture { ProjectFixture(this, testRoot) }
before { copy() }
after { close() }
block()
}
} }
} }
} }

View File

@@ -0,0 +1,15 @@
package org.nixos.gradle2nix;
import org.gradle.api.artifacts.Dependency;
import org.gradle.api.internal.artifacts.dependencies.DefaultExternalModuleDependency;
import javax.annotation.Nullable;
/**
* Workarounds for APIs improperly marked with @NonNullApi.
*/
interface ApiHack {
static Dependency defaultExternalModuleDependency(String group, String name, @Nullable String version) {
return new DefaultExternalModuleDependency(group, name, version);
}
}

View File

@@ -6,6 +6,7 @@ import org.apache.ivy.plugins.parser.m2.PomReader
import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser
import org.apache.ivy.plugins.repository.url.URLResource import org.apache.ivy.plugins.repository.url.URLResource
import org.apache.ivy.plugins.resolver.ChainResolver import org.apache.ivy.plugins.resolver.ChainResolver
import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.ModuleIdentifier import org.gradle.api.artifacts.ModuleIdentifier
import org.gradle.api.artifacts.ResolvedArtifact import org.gradle.api.artifacts.ResolvedArtifact
@@ -23,12 +24,21 @@ import org.gradle.kotlin.dsl.withArtifacts
import org.gradle.maven.MavenModule import org.gradle.maven.MavenModule
import org.gradle.maven.MavenPomArtifact import org.gradle.maven.MavenPomArtifact
import org.gradle.util.GradleVersion import org.gradle.util.GradleVersion
import java.io.File
internal class ConfigurationResolverFactory(repositories: RepositoryHandler) { enum class ConfigurationScope {
BUILDSCRIPT,
PLUGIN,
PROJECT
}
internal class ConfigurationResolverFactory(
project: Project,
scope: ConfigurationScope,
repositories: RepositoryHandler
) {
private val ivySettings = IvySettings().apply { private val ivySettings = IvySettings().apply {
defaultInit() defaultInit()
setDefaultRepositoryCacheBasedir(createTempDir("gradle2nix-cache").apply(File::deleteOnExit).absolutePath) defaultRepositoryCacheManager = null
setDictatorResolver(ChainResolver().also { chain -> setDictatorResolver(ChainResolver().also { chain ->
chain.settings = this@apply chain.settings = this@apply
for (resolver in resolvers) chain.add(resolver) for (resolver in resolvers) chain.add(resolver)
@@ -38,7 +48,7 @@ internal class ConfigurationResolverFactory(repositories: RepositoryHandler) {
private val resolvers = repositories private val resolvers = repositories
.filterIsInstance<ResolutionAwareRepository>() .filterIsInstance<ResolutionAwareRepository>()
.filterNot { it.createResolver().isLocal } .filterNot { it.createResolver().isLocal }
.mapNotNull { it.repositoryResolver(ivySettings) } .mapNotNull { it.repositoryResolver(project, scope, ivySettings) }
fun create(dependencies: DependencyHandler): ConfigurationResolver = fun create(dependencies: DependencyHandler): ConfigurationResolver =
ConfigurationResolver(ivySettings, resolvers, dependencies) ConfigurationResolver(ivySettings, resolvers, dependencies)
@@ -49,11 +59,23 @@ internal class ConfigurationResolver(
private val resolvers: List<RepositoryResolver>, private val resolvers: List<RepositoryResolver>,
private val dependencies: DependencyHandler private val dependencies: DependencyHandler
) { ) {
private val failed = mutableListOf<ArtifactIdentifier>()
private val ivy = Ivy.newInstance(ivySettings) private val ivy = Ivy.newInstance(ivySettings)
val unresolved: List<ArtifactIdentifier> = failed.toList()
fun resolve(configuration: Configuration): List<DefaultArtifact> { fun resolve(configuration: Configuration): List<DefaultArtifact> {
val resolved = configuration.resolvedConfiguration.lenientConfiguration val resolved = configuration.resolvedConfiguration.lenientConfiguration
failed.addAll(resolved.unresolvedModuleDependencies.map {
DefaultArtifactIdentifier(
group = it.selector.group,
name = it.selector.name,
version = it.selector.version ?: "",
type = "module"
)
})
val topLevelMetadata = resolved.firstLevelModuleDependencies val topLevelMetadata = resolved.firstLevelModuleDependencies
.flatMap { resolveMetadata(it.moduleGroup, it.moduleName, it.moduleVersion) } .flatMap { resolveMetadata(it.moduleGroup, it.moduleName, it.moduleVersion) }
@@ -78,6 +100,7 @@ internal class ConfigurationResolver(
val sha256 = resolvedArtifact.file.sha256() val sha256 = resolvedArtifact.file.sha256()
val artifacts = resolvers.mapNotNull { it.resolve(artifactId, sha256) }.merge() val artifacts = resolvers.mapNotNull { it.resolve(artifactId, sha256) }.merge()
if (artifacts.isEmpty()) failed.add(artifactId)
return artifacts + componentId.run { resolveMetadata(group, module, version) } return artifacts + componentId.run { resolveMetadata(group, module, version) }
} }
@@ -113,7 +136,9 @@ internal class ConfigurationResolver(
type = "pom" type = "pom"
) )
val sha256 = resolvedPom.file.sha256() val sha256 = resolvedPom.file.sha256()
resolvers.mapNotNull { it.resolve(artifactId, sha256) }.merge() val artifacts = resolvers.mapNotNull { it.resolve(artifactId, sha256) }.merge()
if (artifacts.isEmpty()) failed.add(artifactId)
artifacts
} }
} }
@@ -140,7 +165,9 @@ internal class ConfigurationResolver(
extension = "xml" extension = "xml"
) )
val sha256 = resolvedDesc.file.sha256() val sha256 = resolvedDesc.file.sha256()
resolvers.mapNotNull { it.resolve(artifactId, sha256) }.merge() val artifacts = resolvers.mapNotNull { it.resolve(artifactId, sha256) }.merge()
if (artifacts.isEmpty()) failed.add(artifactId)
artifacts
} }
} }
@@ -155,7 +182,9 @@ internal class ConfigurationResolver(
version = version, version = version,
type = "module" type = "module"
) )
return resolvers.mapNotNull { it.resolve(artifactId) }.merge() val artifacts = resolvers.mapNotNull { it.resolve(artifactId) }.merge()
if (artifacts.isEmpty()) failed.add(artifactId)
return artifacts
} }
private fun ResolvedArtifactResult.parentPom(): ResolvedArtifactResult? { private fun ResolvedArtifactResult.parentPom(): ResolvedArtifactResult? {

View File

@@ -18,7 +18,7 @@ import org.gradle.tooling.provider.model.ToolingModelBuilder
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
import org.gradle.util.GradleVersion import org.gradle.util.GradleVersion
import java.net.URL import java.net.URL
import java.util.Locale import java.util.*
@Suppress("unused") @Suppress("unused")
open class Gradle2NixPlugin : Plugin<Gradle> { open class Gradle2NixPlugin : Plugin<Gradle> {
@@ -127,7 +127,7 @@ private fun Project.buildGradle(): DefaultGradle =
} }
private fun Project.buildPlugins(pluginRequests: List<PluginRequest>): List<DefaultArtifact> { private fun Project.buildPlugins(pluginRequests: List<PluginRequest>): List<DefaultArtifact> {
return objects.newInstance<PluginResolver>().resolve(pluginRequests).distinct().sorted() return objects.newInstance<PluginResolver>(this).resolve(pluginRequests).distinct().sorted()
} }
private fun Project.includedBuilds(): List<DefaultIncludedBuild> = private fun Project.includedBuilds(): List<DefaultIncludedBuild> =
@@ -141,37 +141,64 @@ private fun Project.buildProject(
pluginArtifacts: List<DefaultArtifact> pluginArtifacts: List<DefaultArtifact>
): DefaultProject { ): DefaultProject {
logger.lifecycle(" Subproject: $path") logger.lifecycle(" Subproject: $path")
val (buildscriptDependencies, buildscriptUnresolved) = buildscriptDependencies(pluginArtifacts)
if (buildscriptUnresolved.isNotEmpty()) {
logger.warn(buildString {
append(" Failed to resolve buildscript dependencies:\n")
for (id in buildscriptUnresolved) {
append(" - $id\n")
}
})
}
val (projectDependencies, projectUnresolved) = projectDependencies(explicitConfigurations)
if (projectUnresolved.isNotEmpty()) {
logger.warn(buildString {
append(" Failed to resolve project dependencies:\n")
for (id in projectUnresolved) {
append(" - $id\n")
}
})
}
return DefaultProject( return DefaultProject(
name = name, name = name,
version = version.toString(), version = version.toString(),
path = path, path = path,
projectDir = projectDir.toRelativeString(rootProject.projectDir), projectDir = projectDir.toRelativeString(rootProject.projectDir),
buildscriptDependencies = buildscriptDependencies(pluginArtifacts), buildscriptDependencies = buildscriptDependencies,
projectDependencies = projectDependencies(explicitConfigurations), projectDependencies = projectDependencies,
children = explicitSubprojects.map { children = explicitSubprojects.map {
it.buildProject(explicitConfigurations, emptyList(), pluginArtifacts) it.buildProject(explicitConfigurations, emptyList(), pluginArtifacts)
} }
) )
} }
private fun Project.buildscriptDependencies(pluginArtifacts: List<DefaultArtifact>): List<DefaultArtifact> { private fun Project.buildscriptDependencies(
val resolverFactory = ConfigurationResolverFactory(buildscript.repositories) pluginArtifacts: List<DefaultArtifact>
): Pair<List<DefaultArtifact>, List<ArtifactIdentifier>> {
val resolverFactory = ConfigurationResolverFactory(this, ConfigurationScope.BUILDSCRIPT, buildscript.repositories)
val resolver = resolverFactory.create(buildscript.dependencies) val resolver = resolverFactory.create(buildscript.dependencies)
val pluginIds = pluginArtifacts.map(DefaultArtifact::id) val pluginIds = pluginArtifacts.map(DefaultArtifact::id)
return buildscript.configurations return buildscript.configurations
.flatMap(resolver::resolve) .flatMap(resolver::resolve)
.distinct() .distinct()
.filter { it.id !in pluginIds } .filter { it.id !in pluginIds }
.sorted() .sorted() to resolver.unresolved
} }
private fun Project.projectDependencies(explicitConfigurations: List<String>): List<DefaultArtifact> { private fun Project.projectDependencies(
val resolverFactory = ConfigurationResolverFactory(repositories) explicitConfigurations: List<String>
): Pair<List<DefaultArtifact>, List<ArtifactIdentifier>> {
val resolverFactory = ConfigurationResolverFactory(this, ConfigurationScope.PROJECT, repositories)
val resolver = resolverFactory.create(dependencies) val resolver = resolverFactory.create(dependencies)
return collectConfigurations(explicitConfigurations) return collectConfigurations(explicitConfigurations)
.flatMap(resolver::resolve) .flatMap(resolver::resolve)
.distinct() .distinct()
.sorted() .sorted() to resolver.unresolved
} }
private fun Project.dependentSubprojects(explicitConfigurations: List<String>): Set<Project> { private fun Project.dependentSubprojects(explicitConfigurations: List<String>): Set<Project> {

View File

@@ -1,25 +1,28 @@
package org.nixos.gradle2nix package org.nixos.gradle2nix
import org.gradle.api.internal.artifacts.dependencies.DefaultExternalModuleDependency import org.gradle.api.Project
import org.gradle.plugin.management.PluginRequest import org.gradle.plugin.management.PluginRequest
import org.gradle.plugin.use.internal.PluginDependencyResolutionServices import org.gradle.plugin.use.internal.PluginDependencyResolutionServices
import javax.inject.Inject import javax.inject.Inject
internal open class PluginResolver @Inject constructor( internal open class PluginResolver @Inject constructor(
project: Project,
pluginDependencyResolutionServices: PluginDependencyResolutionServices pluginDependencyResolutionServices: PluginDependencyResolutionServices
) { ) {
private val configurations = pluginDependencyResolutionServices.configurationContainer private val configurations = pluginDependencyResolutionServices.configurationContainer
private val resolver = ConfigurationResolverFactory( private val resolver = ConfigurationResolverFactory(
project,
ConfigurationScope.PLUGIN,
pluginDependencyResolutionServices.resolveRepositoryHandler pluginDependencyResolutionServices.resolveRepositoryHandler
).create(pluginDependencyResolutionServices.dependencyHandler) ).create(pluginDependencyResolutionServices.dependencyHandler)
fun resolve(pluginRequests: List<PluginRequest>): List<DefaultArtifact> { fun resolve(pluginRequests: List<PluginRequest>): List<DefaultArtifact> {
val markerDependencies = pluginRequests.map { val markerDependencies = pluginRequests.map { request ->
it.module?.let { selector -> request.module?.let { module ->
DefaultExternalModuleDependency(selector.group, selector.name, selector.version) ApiHack.defaultExternalModuleDependency(module.group, module.name, module.version)
} ?: it.id.run { } ?: request.id.id.let { id ->
DefaultExternalModuleDependency(id, "$id.gradle.plugin", it.version) ApiHack.defaultExternalModuleDependency(id, "$id.gradle.plugin", request.version)
} }
} }
return resolver.resolve(configurations.detachedConfiguration(*markerDependencies.toTypedArray())) return resolver.resolve(configurations.detachedConfiguration(*markerDependencies.toTypedArray()))

View File

@@ -15,6 +15,7 @@ import org.apache.ivy.plugins.resolver.URLResolver
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader
import org.codehaus.plexus.util.ReaderFactory import org.codehaus.plexus.util.ReaderFactory
import org.codehaus.plexus.util.xml.pull.XmlPullParserException import org.codehaus.plexus.util.xml.pull.XmlPullParserException
import org.gradle.api.Project
import org.gradle.api.artifacts.repositories.ArtifactRepository import org.gradle.api.artifacts.repositories.ArtifactRepository
import org.gradle.api.artifacts.repositories.IvyArtifactRepository import org.gradle.api.artifacts.repositories.IvyArtifactRepository
import org.gradle.api.artifacts.repositories.MavenArtifactRepository import org.gradle.api.artifacts.repositories.MavenArtifactRepository
@@ -27,10 +28,14 @@ import org.apache.ivy.core.module.descriptor.Artifact as IvyArtifact
import org.apache.ivy.core.module.descriptor.DefaultArtifact as IvyDefaultArtifact import org.apache.ivy.core.module.descriptor.DefaultArtifact as IvyDefaultArtifact
import org.apache.ivy.plugins.resolver.RepositoryResolver as IvyRepositoryResolver import org.apache.ivy.plugins.resolver.RepositoryResolver as IvyRepositoryResolver
internal fun ResolutionAwareRepository.repositoryResolver(ivySettings: IvySettings): RepositoryResolver? = internal fun ResolutionAwareRepository.repositoryResolver(
project: Project,
scope: ConfigurationScope,
ivySettings: IvySettings
): RepositoryResolver? =
when(this) { when(this) {
is MavenArtifactRepository -> MavenResolver(ivySettings, this) is MavenArtifactRepository -> MavenResolver(project, scope, ivySettings, this)
is IvyArtifactRepository -> IvyResolver(ivySettings, this) is IvyArtifactRepository -> IvyResolver(project, scope, ivySettings, this)
else -> null else -> null
} }
@@ -49,6 +54,8 @@ internal sealed class RepositoryResolver {
} }
internal class MavenResolver( internal class MavenResolver(
project: Project,
scope: ConfigurationScope,
ivySettings: IvySettings, ivySettings: IvySettings,
repository: MavenArtifactRepository repository: MavenArtifactRepository
) : RepositoryResolver() { ) : RepositoryResolver() {
@@ -58,7 +65,7 @@ internal class MavenResolver(
root = repository.url.toString() root = repository.url.toString()
isM2compatible = true isM2compatible = true
settings = ivySettings settings = ivySettings
setCache(cacheManager(ivySettings, repository).name) setCache(cacheManager(project, scope, ivySettings, repository).name)
} }
override fun resolve(artifactId: DefaultArtifactIdentifier, sha256: String?): DefaultArtifact? { override fun resolve(artifactId: DefaultArtifactIdentifier, sha256: String?): DefaultArtifact? {
@@ -121,6 +128,8 @@ internal class MavenResolver(
} }
internal class IvyResolver( internal class IvyResolver(
project: Project,
scope: ConfigurationScope,
ivySettings: IvySettings, ivySettings: IvySettings,
repository: IvyArtifactRepository repository: IvyArtifactRepository
) : RepositoryResolver() { ) : RepositoryResolver() {
@@ -132,7 +141,7 @@ internal class IvyResolver(
for (p in ivyResolver.ivyPatterns) addIvyPattern(p) for (p in ivyResolver.ivyPatterns) addIvyPattern(p)
for (p in ivyResolver.artifactPatterns) addArtifactPattern(p) for (p in ivyResolver.artifactPatterns) addArtifactPattern(p)
settings = ivySettings settings = ivySettings
setCache(cacheManager(ivySettings, repository).name) setCache(cacheManager(project, scope, ivySettings, repository).name)
} }
override fun resolve(artifactId: DefaultArtifactIdentifier, sha256: String?): DefaultArtifact? { override fun resolve(artifactId: DefaultArtifactIdentifier, sha256: String?): DefaultArtifact? {
@@ -149,11 +158,16 @@ internal class IvyResolver(
} }
} }
private fun cacheManager(ivySettings: IvySettings, repository: ArtifactRepository): RepositoryCacheManager { private fun cacheManager(
project: Project,
scope: ConfigurationScope,
ivySettings: IvySettings,
repository: ArtifactRepository
): RepositoryCacheManager {
return DefaultRepositoryCacheManager( return DefaultRepositoryCacheManager(
"${repository.name}-cache", "${scope.name.toLowerCase()}-${repository.name}-cache",
ivySettings, ivySettings,
createTempDir("gradle2nix-${repository.name}-cache") project.buildDir.resolve("tmp/gradle2nix/${scope.name.toLowerCase()}/${repository.name}")
).also { ).also {
ivySettings.addRepositoryCacheManager(it) ivySettings.addRepositoryCacheManager(it)
} }

View File

@@ -1 +1,3 @@
enableFeaturePreview("ONE_LOCKFILE_PER_PROJECT")
include(":app", ":model", ":plugin") include(":app", ":model", ":plugin")