GithubHelp home page GithubHelp logo

tadfisher / gradle2nix Goto Github PK

View Code? Open in Web Editor NEW
112.0 112.0 56.0 1.49 MB

Generate Nix expressions which build Gradle-based projects.

License: MIT License

Kotlin 80.30% Nix 19.31% Java 0.38%
gradle nix nixos nixpkgs

gradle2nix's Introduction

./assets/gradle2nix.png

Generate Nix expressions which build Gradle-based projects.

Why?

Nix is an OS-agnostic package manager, a language-agnostic build system, and a bespoke programming language. One of its unique features is that it is purely functional; a “package” is a function which accepts inputs (source code, configuration, etc) and produces an output (binaries, a Java JAR, documentation, really anything).

One benefit of a functional build system is reproducibility. If you specify your inputs precisely, and take care not to introduce impurities—such as files retrieved over a network without tracking their content—you will receive, byte-for-byte, the exact output as someone else running the same function over the same inputs.

Gradle is not a functional build system. Most Gradle-based projects will produce highly variable outputs depending on a host of impure inputs, including:

  • The JVM hosting the build
  • The Gradle installation running the build
  • Any usage of dynamic version constraints for dependencies
  • SNAPSHOT dependencies
  • Environment variables and command-line options
  • Artifacts cached on the system hosting the build

gradle2nix helps to solve this problem by leveraging Nix to control the most common inputs to a Gradle build. When run on a project, it will record all dependencies for both the build environment (including plugins and buildscript blocks) and the project, and provide a Nix expression to run the build given these dependencies. The build itself is then run in a sandbox, where only content-tracked network requests are allowed to fetch dependencies, and a local Maven repository is created on-the-fly to host the dependency artifacts somewhere Gradle can resolve them without a network.

This tool is useful for both development and packaging. You can use gradle2nix to:

  • Create isolated and reproducible development environments that work anywhere Nix itself can run;
  • Reduce or eliminate flakiness and maintenance headaches from CI/CD pipelines
  • Distribute a recipe which can reliably build a Gradle project in repositories such as the Nix Package Collection.

Installation

A Nix expression (generated by gradle2nix itself) is provided for convenience. The following expression will fetch and build the latest version of this package:

import (fetchTarball "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz")  {}

If this expression is in, say, gradle2nix.nix, gradle2nix can be built and placed in .//result with the following:

nix build -f gradle2nix.nix

You can also use the following one-liners to build or install gradle2nix in your user profile:

# Build and place in ./result/
nix build -f "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz"

# Build and install in the user profile
nix-env -if "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz"

gradle2nix is not yet packaged in nixpkgs itself, but work is in progress.

Flake (experimental)

A flake.nix is provided for those using Nix flakes. For example, the following will build and run gradle2nix with the arguments provided after --:

nix run github:tadfisher/gradle2nix -- --help

Usage

Usage: gradle2nix [OPTIONS] [PROJECT-DIR]

Options:
  -g, --gradle-version VERSION     Use a specific Gradle version
  -a, --gradle-args ARGS           Extra arguments to pass to Gradle
  -c, --configuration NAME         Add a configuration to resolve (default:
                                   all configurations)
  -i, --include DIR                Add an additional project to include
  -p, --project PATH               Only resolve these subproject paths, e.g.
                                   ':', or ':sub:project' (default: all
                                   projects)
  -o, --out-dir DIR                Path to write generated files (default:
                                   PROJECT-DIR)
  -e, --env FILENAME               Prefix for environment files (.json and
                                   .nix) (default: gradle-env)
  -b, --build-src / -nb, --no-build-src
                                   Include buildSrc project (default: true)
  -q, --quiet                      Disable logging
  -h, --help                       Show this message and exit

Arguments:
  PROJECT-DIR  Path to the project root (default: .)

Simply running gradle2nix in the root directory of a project should be enough for most projects. This will produce two files, by default called gradle-env.json and gradle-env.nix, which contain the pinned dependencies for the project and a standard build expression which can be imported or called by other Nix expressions. An example of such an expression can be found in this project’s default.nix.

Specifying the Gradle version

By default, if the project has configured the Gradle wrapper, that version will be detected and pinned; otherwise, the version of Gradle installed on your system will be pinned. You can override this with the --gradle-version argument, which also avoids the need to have Gradle installed.

gradle2nix -g 6.1

Multi-project builds

If you want to resolve only a subset of projects in a multi-project build, add the --project option for each project. For example, in a project where you only want to build the subprojects :app and :widget:

gradle2nix -p :app -p :widget

Any project dependencies will be also be included when pinning dependency artifacts.

Contributing

Bug reports and feature requests are encouraged.

Create an issue

Code contributions are also encouraged. Please review the test cases in the fixtures directory and create a new one to reproduce any fixes or test new features. See the existing compatibility tests for examples of testing with these fixtures.

License

gradle2nix is licensed under the MIT License.

gradle2nix's People

Contributors

eyjhb avatar mic92 avatar portothree avatar tadfisher avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

gradle2nix's Issues

Support for S3 repositories

Hello,

I've been trying to get a previously working Nix build of a project going again after various upgrades of Gradle and Spring, and the current issue I'm facing is that we have an S3 bucket that we use as a Maven repository, but this seems not to work now when calling gradle2nix, perhaps because of the new dependency resolution introduced in 648be6b. The error message is below.

Is there an easy way to fix this so that gradle2nix (well, Ivy) is able to read from the repository, using Gradle's awsIm(AwsImAuthentication) or some other means?

If that's not easy, I'd also be interested in having a way to tell (or patch...) gradle2nix to ignore missing dependencies, since we already have custom logic in Nix to replace the gradle-env.json deps for things coming from this repo with locally built jars/poms instead.

Thanks!

FAILURE: Build failed with an exception.

* What went wrong:
maven: unable to get resource for org/springframework/boot#spring-boot-configuration-processor;2.3.4.RELEASE: res=s3://mybucket/org/springframework/boot/spring-boot-configuration-processor/2.3.4.RELEASE/spring-boot-configuration-processor-2.3.4.RELEASE.pom: java.net.MalformedURLException: unknown protocol: s3
> unknown protocol: s3

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

CONFIGURE FAILED in 47s
Exception in thread "main" org.gradle.tooling.BuildException: Could not fetch model of type 'Build' using connection to Gradle distribution 'https://services.gradle.org/distributions/gradle-6.7-bin.zip'.
        at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:51)
        at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:29)
<...much more stack trace...>
Caused by: java.lang.RuntimeException: maven: unable to get resource for org/springframework/boot#spring-boot-configuration-processor;2.3.4.RELEASE: res=s3://mybucket/org/springframework/boot/spring-boot-configuration-processor/2.3.4.RELEASE/spring-boot-configuration-processor-2.3.4.RELEASE.pom: java.net.MalformedURLException: unknown protocol: s3
        at org.apache.ivy.plugins.resolver.RepositoryResolver.findResourceUsingPattern(RepositoryResolver.java:139)
        at org.apache.ivy.plugins.resolver.AbstractPatternsBasedResolver.findResourceUsingPatterns(AbstractPatternsBasedResolver.java:94)
        at org.apache.ivy.plugins.resolver.IBiblioResolver.findArtifactRef(IBiblioResolver.java:129)
        at org.apache.ivy.plugins.resolver.BasicResolver.getArtifactRef(BasicResolver.java:1029)
        at org.apache.ivy.plugins.resolver.BasicResolver.locate(BasicResolver.java:894)
        at org.apache.ivy.plugins.resolver.IBiblioResolver.locate(IBiblioResolver.java:575)
        at org.nixos.gradle2nix.MavenResolver.resolve(RepositoryResolver.kt:73)
        at org.nixos.gradle2nix.RepositoryResolver.resolve$default(RepositoryResolver.kt:52)
        at org.nixos.gradle2nix.ConfigurationResolver.resolvePoms(ConfigurationResolver.kt:142)
        at org.nixos.gradle2nix.ConfigurationResolver.resolveMetadata(ConfigurationResolver.kt:115)
        at org.nixos.gradle2nix.ConfigurationResolver.resolve(ConfigurationResolver.kt:83)
        at org.nixos.gradle2nix.Gradle2NixPluginKt.projectDependencies(Gradle2NixPlugin.kt:227)
        at org.nixos.gradle2nix.Gradle2NixPluginKt.buildProject(Gradle2NixPlugin.kt:184)

v2: How to ensure Rust Gradle plugin can find `cargo`?

I am trying to use V2 to build an Android app that embeds a Rust library. NDK and everything is set up but now the build fails with "cargo: cannot find file or directory".

I've added Rust to the nativeBuildInputs but perhaps that isn't propagated all the way to the plugin? See https://github.com/firezone/firezone/pull/5647/files#diff-83ff257f624bb4fe99fc0695e3a9e038cb9eabfd5e4b0685cc1d6d765628f7a7R152-R163.

packages.firezone-android-debug =
  gradle2nix.builders.${system}.buildGradlePackage
    {
      pname = "firezone-android";
      # mark:next-android-version
      version = "1.1.2";
      src = ../../kotlin/android;
      lockFile = ../../kotlin/android/gradle.lock;
      gradleInstallFlags = [ "--stacktrace bundleDebug" ];

      NDK_HOME = "${android-sdk}/share/android-sdk/ndk/25.2.9519653";
      ANDROID_HOME = "${android-sdk}/share/android-sdk";
      ANDROID_SDK_ROOT = "${android-sdk}/share/android-sdk";
      JAVA_HOME = "${jdk.home}";

      nativeBuildInputs = [
        (pinnedRust.override
          {
            targets = [
              "aarch64-linux-android"
              "arm-linux-androideabi"
              "armv7-linux-androideabi"
              "i686-linux-android"
              "x86_64-linux-android"
            ];
          })
      ];
      overlays = aapt2LinuxJars;
    };

Help is much appreciated, I am still learning how Nix works :)

Build log:

@nix { "action": "setPhase", "phase": "unpackPhase" }
Running phase: unpackPhase
unpacking source archive /nix/store/d8f318gd60k9jklhm56xww9fnp0xd1mj-android
source root is android
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "configurePhase" }
Running phase: configurePhase
gradle: enabled parallel building
gradle: enabled parallel checking
gradle: enabled parallel installing
@nix { "action": "setPhase", "phase": "buildPhase" }
Running phase: buildPhase
@nix { "action": "setPhase", "phase": "installPhase" }
Running phase: installPhase
gradleInstallPhase flags: --console=plain --stacktrace bundleDebug --parallel --max-workers 16

Welcome to Gradle 8.7!

Here are the highlights of this release:
 - Compiling and testing with Java 22
 - Cacheable Groovy script compilation
 - New methods in lazy collection properties

For more details see https://docs.gradle.org/8.7/release-notes.html

Starting a Gradle Daemon (subsequent builds will be faster)
> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :generateLinkerWrapper
> Task :app:generateDebugResValues
> Task :app:injectCrashlyticsMappingFileIdDebug
> Task :app:processDebugGoogleServices
> Task :app:mapDebugSourceSetPaths
> Task :app:generateDebugResources
> Task :app:createDebugCompatibleScreenManifests
> Task :app:extractDeepLinksDebug
> Task :app:processDebugMainManifest
> Task :app:processDebugManifest
> Task :app:processApplicationManifestDebugForBundle
> Task :app:mergeDebugResources
> Task :app:checkDebugAarMetadata
> Task :app:packageDebugResources
> Task :app:mergeDebugShaders
> Task :app:compileDebugShaders NO-SOURCE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :app:parseDebugLocalResources
> Task :app:mergeDebugAssets FROM-CACHE
> Task :app:desugarDebugFileDependencies
> Task :app:dataBindingMergeDependencyArtifactsDebug
> Task :app:generateDebugBuildConfig
> Task :app:dataBindingGenBaseClassesDebug
> Task :app:generateSafeArgsDebug
> Task :app:javaPreCompileDebug
> Task :app:checkDebugDuplicateClasses
> Task :app:cargoBuildArm FAILED
> Task :app:processDebugManifestForPackage

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:cargoBuildArm'.
> A problem occurred starting process 'command 'cargo''

* Try:
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:cargoBuildArm'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:130)
	at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:128)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:116)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:42)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:331)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:318)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.lambda$execute$0(DefaultTaskExecutionGraph.java:314)
	at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:80)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:314)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:303)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:463)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:380)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'cargo''
	at org.gradle.process.internal.DefaultExecHandle.execExceptionFor(DefaultExecHandle.java:241)
	at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:218)
	at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:396)
	at org.gradle.process.internal.ExecHandleRunner.lambda$run$3(ExecHandleRunner.java:102)
	at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:80)
	at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:101)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'cargo'
	at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
	at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36)
	at org.gradle.process.internal.ExecHandleRunner.startProcess(ExecHandleRunner.java:122)
	at org.gradle.process.internal.ExecHandleRunner.lambda$run$0(ExecHandleRunner.java:80)
	at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:80)
	at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:79)
	... 2 more
Caused by: java.io.IOException: Cannot run program "cargo" (in directory "/rust/connlib/clients/android"): error=2, No such file or directory
	at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
	... 7 more
Caused by: java.io.IOException: error=2, No such file or directory
	... 8 more


Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/8.7/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD FAILED in 33s
26 actionable tasks: 25 executed, 1 from cache

gradleGen called without required argument 'version'

Building gradle2nix using 'default.nix' fails:

nix-build default.nix

Error:

error: 'gradleGen' at /nix/store/8f5n92zgsrjvhcc9q1ivkjpd1z6wy75k-nixos-21.11.336177.1622abf0e78/nixos/pkgs/development/tools/build-managers/gradle/default.nix:4:15 called without required argument 'version'

       at /tmp/gradle2nix/gradle-env.nix:328:5:

          327|   mkGradle = gradleSpec:
          328|     gradleGen.gradleGen {
             |     ^
          329|       inherit (gradleSpec) nativeVersion;
(use '--show-trace' to show detailed location information)

Access intermediated build files after build?

Hi,

I'm trying to compile an Android app with gradle2nix which has worked out of the box. Thanks a lot already for implementing this tool!

The app has some special setup. It uses https://github.com/joshjdevl/libsodium-jni as an input for an additional library (say "libX") that itself is then compiled and used to build the app again.

This is the current non-nixified workflow:

  • Build the app using gradle.
  • Copy the files build/intermediates/merged_native_libs/debug/out/lib/$ARCH/libsodiumjni.so to libX's folder.
  • Build the libX (including the libsodiumjni.so), resulting in libX.so.
  • Copy libX.so to app/src/main/jniLibs.
  • Build the app again, this time including libX.so.

As I said, the first step worked out of the box using gradle2nix!
The libsodiumjni.so file is not available after the build so the script that executes steps 2-4 doesn't work.
I believe the app is build twice because libsodiumjni.so is only available (as a build artefact) after the first build when gradle has downloaded it.
This doesn't feel like a proper workflow anyways.

Is there any way provided by gradle or gradle2nix to have libsodiumjni.so available before the actual build?
Ideally, I'd like to replace step 1 by something-that-just-fetches-the-deps and then only build the app once (step 5) with gradel2nix. I've looked into the generated gradle-env.nix and though maybe mkDep might be of some help here. I don't have experience with gradle so I am actually guessing.

Any help is appreciated.

stabilizing gradle-env{.json,.nix} format/interface

Since we had the discussion on breaking changes in NixOS/nixpkgs#77422 I've kind of been waiting for a 1.0.0 release in the assumption that there might be more breaking changes until then. So I would like to track the status of this stabilization here. What is still to be done, or can we use gradle2nix in nixpkgs as-is?

org.grails:grails-gradle-plugin:3.3.9 dependencies are not found

I'm currently trying to package bigbluebutton-web which uses the grails gradle plugin (see here).
However, gradle2nix (gradle2nix -g 5.6.4 -c compile) seems to generate the wrong dependency versions:

A problem occurred configuring root project 'bigbluebutton'.
> Could not resolve all artifacts for configuration ':classpath'.
   > Could not resolve io.spring.gradle:dependency-management-plugin:0.6.1.RELEASE.
     Required by:
         project : > org.grails:grails-gradle-plugin:3.3.9
      > No cached version of io.spring.gradle:dependency-management-plugin:0.6.1.RELEASE available for offline mode.
      > No cached version of io.spring.gradle:dependency-management-plugin:0.6.1.RELEASE available for offline mode.
   > Could not resolve commons-logging:commons-logging:1.1.1.
     Required by:
         project : > com.bertramlabs.plugins:asset-pipeline-gradle:2.15.1 > com.bertramlabs.plugins:asset-pipeline-core:2.15.1
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.codehaus.groovy.modules.http-builder:http-builder:0.7.2 > net.sf.json-lib:json-lib:2.3
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.codehaus.groovy.modules.http-builder:http-builder:0.7.2 > net.sf.json-lib:json-lib:2.3 > commons-beanutils:commons-bean
utils:1.8.0
      > No cached version of commons-logging:commons-logging:1.1.1 available for offline mode.
      > No cached version of commons-logging:commons-logging:1.1.1 available for offline mode.
   > Could not resolve org.apache.httpcomponents:httpclient:4.2.1.
     Required by:
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.codehaus.groovy.modules.http-builder:http-builder:0.7.2
      > No cached version of org.apache.httpcomponents:httpclient:4.2.1 available for offline mode.
      > No cached version of org.apache.httpcomponents:httpclient:4.2.1 available for offline mode.
   > Could not resolve org.codehaus.plexus:plexus-utils:1.5.15.
     Required by:
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3 > org.apache.maven:maven-artifact:2.2.1
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3 > org.apache.maven:maven-artifact-manager:2.2.1
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3 > org.apache.maven:maven-project:2.2.1
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3 > org.apache.maven:maven-project:2.2.1 > org.apache.maven:maven-profile:2.2.1
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3 > org.apache.maven:maven-project:2.2.1 > org.apache.maven:maven-plugin-registry:2.2.1
      > No cached version of org.codehaus.plexus:plexus-utils:1.5.15 available for offline mode.
      > No cached version of org.codehaus.plexus:plexus-utils:1.5.15 available for offline mode.
   > Could not resolve org.codehaus.plexus:plexus-interpolation:1.11.
     Required by:
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3 > org.apache.maven:maven-project:2.2.1
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3 > org.apache.maven:maven-project:2.2.1 > org.apache.maven:maven-profile:2.2.1
      > No cached version of org.codehaus.plexus:plexus-interpolation:1.11 available for offline mode.
      > No cached version of org.codehaus.plexus:plexus-interpolation:1.11 available for offline mode.
   > Could not resolve org.apache.maven:maven-model:2.2.1.
     Required by:
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3 > org.apache.maven:maven-project:2.2.1
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3 > org.apache.maven:maven-project:2.2.1 > org.apache.maven:maven-profile:2.2.1
      > No cached version of org.apache.maven:maven-model:2.2.1 available for offline mode.
      > No cached version of org.apache.maven:maven-model:2.2.1 available for offline mode.
   > Could not resolve org.apache.maven:maven-settings:2.2.1.
     Required by:
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3 > org.apache.maven:maven-project:2.2.1
      > No cached version of org.apache.maven:maven-settings:2.2.1 available for offline mode.
      > No cached version of org.apache.maven:maven-settings:2.2.1 available for offline mode.
   > Could not resolve commons-collections:commons-collections:3.2.1.
     Required by:
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.codehaus.groovy.modules.http-builder:http-builder:0.7.2 > net.sf.json-lib:json-lib:2.3
      > No cached version of commons-collections:commons-collections:3.2.1 available for offline mode.
      > No cached version of commons-collections:commons-collections:3.2.1 available for offline mode.
   > Could not resolve org.codehaus.plexus:plexus-utils:1.5.15.
     Required by:
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3 > org.codehaus.plexus:plexus-container-default:1.0-alpha-9-stable-1
      > No cached version of org.codehaus.plexus:plexus-utils:1.5.15 available for offline mode.
      > No cached version of org.codehaus.plexus:plexus-utils:1.5.15 available for offline mode.
   > Could not resolve org.apache.maven:maven-repository-metadata:2.2.1.
     Required by:
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3 > org.apache.maven:maven-artifact-manager:2.2.1
      > No cached version of org.apache.maven:maven-repository-metadata:2.2.1 available for offline mode.
      > No cached version of org.apache.maven:maven-repository-metadata:2.2.1 available for offline mode.
   > Could not resolve org.codehaus.plexus:plexus-utils:1.5.15.
     Required by:
         project : > org.grails:grails-gradle-plugin:3.3.9 > com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3 > org.apache.maven:maven-ant-tasks:2.1.3 > org.apache.maven.wagon:wagon-provider-api:1.0-beta-6
      > No cached version of org.codehaus.plexus:plexus-utils:1.5.15 available for offline mode.
      > No cached version of org.codehaus.plexus:plexus-utils:1.5.15 available for offline mode.

Gradle2nix seems to detect the dependencies correctly, but inserts the wrong versions, for example it uses io.spring.gradle:dependency-management-plugin:1.0.6.RELEASE instead of io.spring.gradle:dependency-management-plugin:0.6.1.RELEASE.

Unable to fetch gradle-stutter module during installation

Hi,

I'm attempting to install gradle2nix directly from the latest github release, tag. I'm using the following command:

nix-env --option sandbox false -if "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz"

However, the build gives the following error:
error: cannot download gradle-stutter-0.6.0.module from any mirror.

I can see that curl is attempting to fetch the following URL, and getting a 404 error:
https://plugins.gradle.org/m2/org/ajoberstar/gradle-stutter/0.6.0/gradle-stutter-0.6.0.module

A browse of the index suggests that no such entry exists in the plugin directory:

https://plugins.gradle.org/m2/org/ajoberstar/gradle-stutter/0.6.0/

gradle-stutter-0.6.0-groovydoc.jar
gradle-stutter-0.6.0-groovydoc.jar.md5
gradle-stutter-0.6.0-groovydoc.jar.sha1
gradle-stutter-0.6.0-javadoc.jar
gradle-stutter-0.6.0-javadoc.jar.md5
gradle-stutter-0.6.0-javadoc.jar.sha1
gradle-stutter-0.6.0-sources.jar
gradle-stutter-0.6.0-sources.jar.md5
gradle-stutter-0.6.0-sources.jar.sha1
gradle-stutter-0.6.0.jar
gradle-stutter-0.6.0.jar.md5
gradle-stutter-0.6.0.jar.sha1
gradle-stutter-0.6.0.pom
gradle-stutter-0.6.0.pom.md5
gradle-stutter-0.6.0.pom.sha1

Editing the grade-env.json file to remove the entry for gradle-stutter-0.6.0.module was sufficient to make the derivation build successfully.

Thanks
Vaci

Lenient configuration - attributes

I have tried the lenient config branch, and it seems to work well. There is one issue however.

When I use it on antennapod Android app source, I get these errors

[nix-shell:~/projects/nixos/fdroid/antennapod/src]$ ../../gradle2nix/result/bin/gradle2nix
Resolving project model: root project...
    Subproject: :
    Subproject: :app

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all dependencies for configuration ':app:freeDebugAndroidTestCompileClasspath'.
> More than one variant of project :core matches the consumer attributes:
    - Configuration ':core:freeDebugApiElements' variant android-aidl:
        - Unmatched attributes:
            - Found artifactType 'android-aidl' but wasn't required.
            - Found com.android.build.api.attributes.VariantAttr 'freeDebug' but wasn't required.
        - Compatible attributes:
            - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
            - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
            - Required market 'free' and found compatible value 'free'.
            - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.
    - Configuration ':core:freeDebugApiElements' variant android-manifest:
        - Unmatched attributes:
            - Found artifactType 'android-manifest' but wasn't required.
            - Found com.android.build.api.attributes.VariantAttr 'freeDebug' but wasn't required.
        - Compatible attributes:
            - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
            - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
            - Required market 'free' and found compatible value 'free'.
            - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.
    - Configuration ':core:freeDebugApiElements' variant android-renderscript:
        - Unmatched attributes:
            - Found artifactType 'android-renderscript' but wasn't required.
            - Found com.android.build.api.attributes.VariantAttr 'freeDebug' but wasn't required.
        - Compatible attributes:
            - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
            - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
            - Required market 'free' and found compatible value 'free'.
            - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.
    - Configuration ':core:freeDebugApiElements' variant android-symbol-with-package-name:
        - Unmatched attributes:
            - Found artifactType 'android-symbol-with-package-name' but wasn't required.
            - Found com.android.build.api.attributes.VariantAttr 'freeDebug' but wasn't required.
        - Compatible attributes:
            - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
            - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
            - Required market 'free' and found compatible value 'free'.
            - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.3/userguide/command_line_interface.html#sec:command_line_warnings

CONFIGURE FAILED in 4m 17s
Exception in thread "main" org.gradle.tooling.BuildException: Could not fetch model of type 'Build' using Gradle distribution 'https://services.gradle.org/distributions/gradle-6.3-all.zip'.
	at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:51)
	at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:29)
	at org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:43)
	at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor.lambda$run$0(DefaultAsyncConsumerActionExecutor.java:57)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
	at java.lang.Thread.run(Thread.java:748)
	at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
	at org.gradle.tooling.internal.consumer.DefaultModelBuilder.get(DefaultModelBuilder.java:51)
	at org.nixos.gradle2nix.GradleRunnerKt.getBuildModel(GradleRunner.kt:30)
	at org.nixos.gradle2nix.Main.run(Main.kt:130)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:154)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:14)
	at com.github.ajalt.clikt.core.CliktCommand.parse(CliktCommand.kt:252)
	at com.github.ajalt.clikt.core.CliktCommand.parse$default(CliktCommand.kt:249)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:267)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:290)
	at org.nixos.gradle2nix.MainKt.main(Main.kt:170)
Caused by: org.gradle.internal.exceptions.LocationAwareException: Could not resolve all dependencies for configuration ':app:freeDebugAndroidTestCompileClasspath'.
	at org.gradle.initialization.exception.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:102)
	at org.gradle.initialization.exception.DefaultExceptionAnalyser.collectFailures(DefaultExceptionAnalyser.java:68)
	at org.gradle.initialization.exception.MultipleBuildFailuresExceptionAnalyser.transform(MultipleBuildFailuresExceptionAnalyser.java:40)
	at org.gradle.initialization.exception.StackTraceSanitizingExceptionAnalyser.transform(StackTraceSanitizingExceptionAnalyser.java:30)
	at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:200)
	at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:127)
	at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:75)
	at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:67)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:189)
	at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
	at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:67)
	at org.gradle.internal.invocation.GradleBuildController.configure(GradleBuildController.java:61)
	at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:56)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:63)
	at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:51)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:50)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:47)
	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:80)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:47)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
	at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
	at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:60)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:38)
	at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
	at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
	at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
	at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:68)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
	at org.gradle.util.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.api.artifacts.ResolveException: Could not resolve all dependencies for configuration ':app:freeDebugAndroidTestCompileClasspath'.
	at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingConfigurationResolver.wrapException(ErrorHandlingConfigurationResolver.java:104)
	at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingConfigurationResolver.access$000(ErrorHandlingConfigurationResolver.java:48)
	at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingConfigurationResolver$ErrorHandlingLenientConfiguration.getArtifacts(ErrorHandlingConfigurationResolver.java:121)
	at org.nixos.gradle2nix.ConfigurationResolver.resolve(ConfigurationResolver.kt:60)
	at org.nixos.gradle2nix.Gradle2NixPluginKt.projectDependencies(Gradle2NixPlugin.kt:172)
	at org.nixos.gradle2nix.Gradle2NixPluginKt.buildProject(Gradle2NixPlugin.kt:150)
	at org.nixos.gradle2nix.Gradle2NixPluginKt.buildProject(Gradle2NixPlugin.kt:152)
	at org.nixos.gradle2nix.Gradle2NixPluginKt.buildModel(Gradle2NixPlugin.kt:103)
	at org.nixos.gradle2nix.Gradle2NixPluginKt.access$buildModel(Gradle2NixPlugin.kt:1)
	at org.nixos.gradle2nix.NixToolingModelBuilder.buildAll(Gradle2NixPlugin.kt:69)
	at org.nixos.gradle2nix.NixToolingModelBuilder.buildAll(Gradle2NixPlugin.kt:60)
	at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder$1$1.create(DefaultToolingModelBuilderRegistry.java:104)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry.withLenientState(DefaultProjectStateRegistry.java:134)
	at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder$1.call(DefaultToolingModelBuilderRegistry.java:100)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
	at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder.buildAll(DefaultToolingModelBuilderRegistry.java:97)
	at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner$BuildResultAdapter.buildModel(BuildModelActionRunner.java:100)
	at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner$BuildResultAdapter.buildFinished(BuildModelActionRunner.java:92)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:382)
	at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:364)
	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
	at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:352)
	at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:339)
	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
	at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:231)
	at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:150)
	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
	at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:325)
	at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:235)
	at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:141)
	at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at com.sun.proxy.$Proxy15.buildFinished(Unknown Source)
	at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:184)
	... 73 more
Caused by: org.gradle.internal.component.AmbiguousVariantSelectionException: More than one variant of project :core matches the consumer attributes:
  - Configuration ':core:freeDebugApiElements' variant android-aidl:
      - Unmatched attributes:
          - Found artifactType 'android-aidl' but wasn't required.
          - Found com.android.build.api.attributes.VariantAttr 'freeDebug' but wasn't required.
      - Compatible attributes:
          - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
          - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
          - Required market 'free' and found compatible value 'free'.
          - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.
  - Configuration ':core:freeDebugApiElements' variant android-manifest:
      - Unmatched attributes:
          - Found artifactType 'android-manifest' but wasn't required.
          - Found com.android.build.api.attributes.VariantAttr 'freeDebug' but wasn't required.
      - Compatible attributes:
          - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
          - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
          - Required market 'free' and found compatible value 'free'.
          - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.
  - Configuration ':core:freeDebugApiElements' variant android-renderscript:
      - Unmatched attributes:
          - Found artifactType 'android-renderscript' but wasn't required.
          - Found com.android.build.api.attributes.VariantAttr 'freeDebug' but wasn't required.
      - Compatible attributes:
          - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
          - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
          - Required market 'free' and found compatible value 'free'.
          - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.
  - Configuration ':core:freeDebugApiElements' variant android-symbol-with-package-name:
      - Unmatched attributes:
          - Found artifactType 'android-symbol-with-package-name' but wasn't required.
          - Found com.android.build.api.attributes.VariantAttr 'freeDebug' but wasn't required.
      - Compatible attributes:
          - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
          - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
          - Required market 'free' and found compatible value 'free'.
          - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.
	at org.gradle.api.internal.artifacts.transform.AttributeMatchingVariantSelector.doSelect(AttributeMatchingVariantSelector.java:92)
	at org.gradle.api.internal.artifacts.transform.AttributeMatchingVariantSelector.select(AttributeMatchingVariantSelector.java:76)
	at org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.DefaultArtifactSet.select(DefaultArtifactSet.java:138)
	at org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.DefaultVisitedArtifactResults.select(DefaultVisitedArtifactResults.java:48)
	at org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration.getSelectedArtifacts(DefaultLenientConfiguration.java:100)
	at org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration.getFirstLevelNodes(DefaultLenientConfiguration.java:181)
	at org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration.getFirstLevelModuleDependencies(DefaultLenientConfiguration.java:173)
	at org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration.getFirstLevelModuleDependencies(DefaultLenientConfiguration.java:293)
	at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingConfigurationResolver$ErrorHandlingLenientConfiguration.getFirstLevelModuleDependencies(ErrorHandlingConfigurationResolver.java:137)
	at org.nixos.gradle2nix.ConfigurationResolver.resolve(ConfigurationResolver.kt:57)
	... 111 more

Which seems like the thing in gradle/gradle#5953

But I have no skills in this what so ever, hoping @tadfisher might know a trick to get this running.
Seems like the last thing, before we can get Android apps build.

Flake installation fails with hash mismatch

Flake installation fails.

Command (shown in Readme.md):

nix run github:tadfisher/gradle2nix -- --help

Error:

error: hash mismatch in fixed-output derivation '/nix/store/6hhf9myxx3wxl38k89l0psm1p6b7006y-jackson-parent-2.12.pom.drv':
         specified: sha256-YqocFnmt4J8XPb8bbDLTXFXnWAAjj9XkjxOqQzfAh1s=
            got:    sha256-Z749r6r4zhcX56fefbkrpDPfkjtpekDJdDpUzJ/FNjc=
error: 1 dependencies of derivation '/nix/store/bahlr2f2rkckb9kph6kh8k96gkdmh4zg-jackson-parent-2.12.pom.drv' failed to build
error: 1 dependencies of derivation '/nix/store/pvv14dxz6npr2i3vbwdghc9wzcqazhfh-gradle2nix-gradle-plugin-env.drv' failed to build
error: 1 dependencies of derivation '/nix/store/lh8rsdgkibw659fizlf1pawxy68bjm58-init.gradle.drv' failed to build
error: 1 dependencies of derivation '/nix/store/3aw06z157ha014n19hq54nfn3zb3dzl8-gradle2nix-1.0.0-rc2.drv' failed to build

Not getting all dependencies

There are currently a problem, where it will not get all the dependencies + it will not place them in the correct deps (plugin, buildscript, etc.)

I have been trying with AntennaPod ( https://github.com/AntennaPod/AntennaPod ), where it will

  1. Constantly set the Gradle version in the gradle-env.json to something like 4.x.x, even if a higher version is specified with -g
  2. Not have the right deps the right places, hence I have done something like this
  mkInitScript = projectSpec:
    let
      repos = mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies;
      test = mkRepo "test" "test" (projectSpec.dependencies.buildscript ++ projectSpec.dependencies.project ++ projectSpec.dependencies.plugin);
    in
      writeText "init.gradle" ''
        static def offlineRepo(RepositoryHandler repositories, String env, String path) {
            repositories.clear()
            repositories.maven {
                name "Nix''${env.capitalize()}MavenOffline"
                url path
                metadataSources {
                    it.gradleMetadata()
                    it.mavenPom()
                    it.artifact()
                }
            }
            repositories.ivy {
                name "Nix''${env.capitalize()}IvyOffline"
                url path
                layout "maven"
                metadataSources {
                    it.gradleMetadata()
                    it.ivyDescriptor()
                    it.artifact()
                }
            }
        }

        gradle.settingsEvaluated {
            offlineRepo(it.pluginManagement.repositories, "plugin", "${test}")
        }

        gradle.projectsLoaded {
            allprojects {
                buildscript {
                    offlineRepo(repositories, "buildscript", "${test}")
                }
                offlineRepo(repositories, "project", "${test}")
            }
        }
      '';

To work around it. Is there even a reason to separate them?

  1. Not fetch all the required dependencies

You can try it for yourself with this patch applied to gradle-env.nix

  mkInitScript = projectSpec:
    let
      repos = mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies;
      test = mkRepo "test" "test" (projectSpec.dependencies.buildscript ++ projectSpec.dependencies.project ++ projectSpec.dependencies.plugin);
    in
      writeText "init.gradle" ''
        static def offlineRepo(RepositoryHandler repositories, String env, String path) {
            repositories.clear()
            repositories.maven {
                name "Nix''${env.capitalize()}MavenOffline"
                url path
                metadataSources {
                    it.gradleMetadata()
                    it.mavenPom()
                    it.artifact()
                }
            }
            repositories.ivy {
                name "Nix''${env.capitalize()}IvyOffline"
                url path
                layout "maven"
                metadataSources {
                    it.gradleMetadata()
                    it.ivyDescriptor()
                    it.artifact()
                }
            }
        }

        gradle.settingsEvaluated {
            offlineRepo(it.pluginManagement.repositories, "plugin", "${test}")
        }

        gradle.projectsLoaded {
            allprojects {
                buildscript {
                    offlineRepo(repositories, "buildscript", "${test}")
                }
                offlineRepo(repositories, "project", "${test}")
            }
        }
      '';

And using this default.nix

{ pkgs ? import <nixpkgs> {config.android_sdk.accept_license = true;} }:

with pkgs;

let
  buildGradle = pkgs.callPackage ./../gradle2nix/app/src/dist/share/gradle-env.nix {};

  sdk = pkgs.androidenv.composeAndroidPackages {
    buildToolsVersions = [ "28.0.3" ];
    # buildToolsVersions = [ "28.0.3" ];
    platformVersions = [ "28" ];
    abiVersions = [ "x86" "x86_64"];
    # toolsVersion = "26.1.1";
  };

  gradle2nix = buildGradle {
    envSpec = ./gradle-env.json;

    src = pkgs.fetchFromGitHub {
      owner = "AntennaPod";
      repo = "AntennaPod";
      rev = "1.8.3";
      sha256 = "0qhp50jz7nf2rf4v8p2y2z1p8js6h6313cm5b829bxz3h12ib8ai";
    };

    # gradleFlags = [ "assemble" ];
    gradleFlags = [ "clean" "assemblePlayDebug" "assemblePlayRelease" ];

    preBuild = ''
      echo "sdk.dir = ${sdk.androidsdk}/libexec/android-sdk" > local.properties
      printf "\nandroid.aapt2FromMavenOverride=${sdk.androidsdk}/libexec/android-sdk/build-tools/29.0.3/aapt2" >> gradle.properties
    '';

    installPhase = ''
      mkdir -p $out
      ls -alR app/build
      find . -name '*.apk' -exec cp {} $out \;
    '';
  };

in gradle2nix

The getting dependencies should work, else try what I did in #17 , and delete the cache.

fixupPhase messes up "info/*" paths

If the dependency name is (for example) info.guardianproject.netcipher-netcipher-2.0.0-beta1-jar, the path in the generated dependencies tree ends up as share/info/guardianproject/... instead of the desired info/guardianproject/....

This is caused by including fixupPhase in mkDep. Is fixupPhase needed here for reasons I don't realize? Removing fixupPhase also seems to speed up the time to create these directories.

Qupath packaging

Hi,

I tried to package Qupath version 0.3.0 https://github.com/qupath/qupath. At first, there was an error as jdk8 was too old to tun gradleGen. I solved this by providing a newer java, but then the build fails as several dependencies cannot be found in the nix store.

Not sure what to do, don't really have much experience with java or gradle.

Any help appreciated.

thanks

Leverage Gradle Lockfile

Hi there

I was reading about this project as I started to explore reproducible gradle builds.

I read the readme and understand (I think) how this package intends to function.

I am curious if enforcing the use of Gradle lockfiles would eliminate the need for the network based dependency tracking?

I was planning to use the single lockfile approach to ensure my gradle builds are reproducible before even attempting to integrate it into a Nix pkg but was curious if you have any thoughts on this?

Thank you for this project I will dig in further!

Error "Could not find method implementation()" when building src project

I'm attempting to use gradle2nix to build a large project, https://github.com/real-logic/aeron.

Most of the dependencies seem to be processed successfully, but I get an odd error with the buildSrc sub-project, which has the following build.gradle file:

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.asciidoctor:asciidoctorj:2.5.2'
    implementation 'org.eclipse.jgit:org.eclipse.jgit:5.13.0.202109080827-r'
}

The error is:
Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method implementation() for arguments [org.asciidoctor:asciidoctorj:2.5.2] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

Reversing the order of the dependencies results in the error being triggered by the jgit project instead.

This seems to be a pretty normal dependency clause? I'm not particularly familiar with gradle, so there may be an obvious cause that I'm missing.

V2 will not install

No idea what could be causing this but this is the log from trying to run

nix run github:tadfisher/gradle2nix -- --help

error: unable to download 'https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.bz2': Couldn't resolve host name (6)

@nix {"action":"start","fields":["https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.bz2"],"id":4294967307,"level":4,"parent":0,"text":"downloading 'https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.bz2'","type":101}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"msg","level":1,"msg":"\u001b[35;1mwarning:\u001b[0m \u001b[31;1merror:\u001b[0m unable to \u001b[35;1mdownload\u001b[0m '\u001b[35;1mhttps://ftp.pcre.org/pub/pcre/pcre-8.44.tar.bz2\u001b[0m': \u00>
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"msg","level":1,"msg":"\u001b[35;1mwarning:\u001b[0m \u001b[31;1merror:\u001b[0m unable to \u001b[35;1mdownload\u001b[0m '\u001b[35;1mhttps://ftp.pcre.org/pub/pcre/pcre-8.44.tar.bz2\u001b[0m': \u00>
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"msg","level":1,"msg":"\u001b[35;1mwarning:\u001b[0m \u001b[31;1merror:\u001b[0m unable to \u001b[35;1mdownload\u001b[0m '\u001b[35;1mhttps://ftp.pcre.org/pub/pcre/pcre-8.44.tar.bz2\u001b[0m': \u00>
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"msg","level":1,"msg":"\u001b[35;1mwarning:\u001b[0m \u001b[31;1merror:\u001b[0m unable to \u001b[35;1mdownload\u001b[0m '\u001b[35;1mhttps://ftp.pcre.org/pub/pcre/pcre-8.44.tar.bz2\u001b[0m': \u00>
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"result","fields":[0,0,0,0],"id":4294967307,"type":105}
@nix {"action":"stop","id":4294967307}
error:
       … writing file '/nix/store/zpf0j0qqw8bhm1knfr1x29zzq8pc85wj-pcre-8.44.tar.bz2'

       error: unable to download 'https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.bz2': Couldn't resolve host name (6)

v2: Cannot set binary as executable

Hi!
I tried building traccar using v2:

{fetchFromGitHub}: let
  gradle2nix = import (fetchTarball "https://github.com/tadfisher/gradle2nix/archive/v2.tar.gz") {};
in
  gradle2nix.buildGradlePackage {
    src = fetchFromGitHub {
      owner = "traccar";
      repo = "traccar";
      rev = "refs/tags/v6.2";
      hash = "sha256-RpLcPBW6TzlxaLj0ngxQtG4/HETKXzl4ckbtCtNPz38=";
    };
    pname = "traccar";
    version = "v6.2";
    lockFile = ./gradle.lock;
  }

which results in: Cannot set /nix/store/w266na4q1ajkk5f2w5hdk70yvpwixrdp-traccar-v6.2-gradle-repo/com/google/protobuf/protoc/4.27.0/protoc-4.27.0-linux-x86_64.exe as executable

complete build log

Building traccar with gradlew build works and results in having an executable protoc-4.27.0-linux-x86_64.exe in ~/.gradle

License for gradle2nix

Hello,

I searched the repo but couldn't find any mention of a license for gradle2nix. Has one been decided upon for this project?

Thanks!

install with flake: hash mismatch in fixed-output derivation

The project looks very good for my use case. I tried using it via the flake but it failed.

$ nix shell github:tadfisher/gradle2nix
error: hash mismatch in fixed-output derivation '/nix/store/a56mz008i9cnfmxrqszlfcvb3ysjq79l-jackson-parent-2.12.pom.drv':
         specified: sha256-Z749r6r4zhcX56fefbkrpDPfkjtpekDJdDpUzJ/FNjc=
            got:    sha256-YqocFnmt4J8XPb8bbDLTXFXnWAAjj9XkjxOqQzfAh1s=
error: 1 dependencies of derivation '/nix/store/dgfnxv0as8q7f6qfc0slqw66wxg5c3ph-jackson-parent-2.12.pom.drv' failed to build
error: 1 dependencies of derivation '/nix/store/17sz3jbmcmsgd1hwqlzsm9bkl7amf9g5-gradle2nix-gradle-plugin-env.drv' failed to build
error: 1 dependencies of derivation '/nix/store/a5zyny6vhxx4l2jiz812qwiysy1a54fx-init.gradle.drv' failed to build
error: 1 dependencies of derivation '/nix/store/s7rbzczmbqbwjkig6qk1p5m4g8n70nd8-gradle2nix-1.0.0-rc2.drv' failed to build

Cannot nix-build gradle2nix based on readme

> nix-build -E 'import (fetchTarball "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz")  {}'
error: value is a function while a set was expected

       at /nix/store/fiz86yyci06adkqi9wrasclcvy2amm5x-source/gradle-env.nix:328:5:

          327|   mkGradle = gradleSpec:
          328|     gradleGen.gradleGen {
             |     ^
          329|       inherit (gradleSpec) nativeVersion;
(use '--show-trace' to show detailed location information)

Plugin applied in settings.gradle missing from offline repo

I have a settings.gradle which looks like this:

buildscript {
    repositories {
        maven {
            url 'https://plugins.gradle.org/m2/'
        }
    }
    dependencies {
        classpath 'gradle.plugin.net.vivin:gradle-semantic-build-versioning:4.0.0'
    }
}

apply plugin: 'net.vivin.gradle-semantic-build-versioning'

rootProject.name = 'kws-request'
include 'kws-request-signing-core'

When I try to build the Nix derivation produced by gradle2nix, I get this:

Starting Build
Compiling initialization script '/nix/store/vcyn2xg4clpi90h0k8l3kl1qsp9lmhr2-init.gradle' using SubsetScriptTransformer.
Compiling initialization script '/nix/store/vcyn2xg4clpi90h0k8l3kl1qsp9lmhr2-init.gradle' using BuildScriptTransformer.
Compiling settings file '/run/user/1002/nix-build-kws-request-0.1.0-SNAPSHOT.drv-1/kws-java/settings.gradle' using SubsetScriptTransformer.

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all artifacts for configuration 'classpath'.
> Could not resolve gradle.plugin.net.vivin:gradle-semantic-build-versioning:4.0.0.
  Required by:
      unspecified:unspecified:unspecified
   > No cached version of gradle.plugin.net.vivin:gradle-semantic-build-versioning:4.0.0 available for offline mode.

I see no sign of the net.vivin.gradle-semantic-build-versioning plugin in gradle-env.json.

error: invalid character '/'

using c3c4079 I get the followin error message while building on 19.09:

error: while evaluating the attribute 'buildPhase' of the derivation 'gradle2nix-1.0.0-rc2' at /nix/store/cw7aa0q7rax20mv7rwx1956cz9jvnrsc-nixos-19.03.173684.c8db7a8a16e/nixos/pkgs/stdenv/generic/make-derivation.nix:190:11:
while evaluating the attribute 'text' of the derivation 'init.gradle' at /nix/store/cw7aa0q7rax20mv7rwx1956cz9jvnrsc-nixos-19.03.173684.c8db7a8a16e/nixos/pkgs/build-support/trivial-builders.nix:7:14:
while evaluating the attribute 'passAsFile' of the derivation 'gradle2nix-gradle-plugin-env' at /nix/store/cw7aa0q7rax20mv7rwx1956cz9jvnrsc-nixos-19.03.173684.c8db7a8a16e/nixos/pkgs/build-support/trivial-builders.nix:7:14:
invalid character '/' in name 'com/fasterxml/jackson/core/jackson-annotations/maven-metadata.xml'

Question: splitting dependencies

Is there any reason why the dependencies are split up into project and then buildscript, plugin and project? Having them in a single dependencies list would yield the same result, but simplify multiple things (I am guessing).

Also, huge thanks for this project!!

How to specify the Java version?

I nixified my JavaFX application and when trying to build it I get java.lang.UnsupportedClassVersionError: org/openjfx/gradle/JavaFXPlugin has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0.

Using Gradle, everything runs fine, I also set the compatibility to JavaVersion.VERSION_11 which is version 55.

Feature Request: Make gradle2nix work for android projects

It would be a huge help if gradle2nix would work for android builds with their impurities. Ticket as requested.

toggle error log
Resolving project model: root project...


�[2A�[1m<�[0;1m-------------> 0% CONFIGURING [36ms]�[m�[37D�[1B�[1m> root project > Resolve dependencies of :classpath�[m�[51D�[1B
�[31mFAILURE: �[39m�[31mBuild failed with an exception.�[39m

* What went wrong:
A problem occurred configuring project ':app'.
�[33m> �[39mkotlin.KotlinNullPointerException (no error message)

* Try:
Run with �[1m--stacktrace�[m option to get the stack trace. Run with �[1m--info�[m or �[1m--debug�[m option to get more log output. Run with �[1m--scan�[m to get full insights.

* Get more help at �[1mhttps://help.gradle.org�[m

�[31;1mCONFIGURE FAILED�[0;39m in 720ms
�[2A�[2K�[1B�[2K�[1AException in thread "main" org.gradle.tooling.BuildException: Could not fetch model of type 'Build' using Gradle distribution 'https://services.gradle.org/distributions/gradle-5.6.4-all.zip'.
	at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:51)
	at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:29)
	at org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:43)
	at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor.lambda$run$0(DefaultAsyncConsumerActionExecutor.java:57)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
	at java.lang.Thread.run(Thread.java:748)
	at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
	at org.gradle.tooling.internal.consumer.DefaultModelBuilder.get(DefaultModelBuilder.java:51)
	at org.nixos.gradle2nix.GradleRunnerKt.getBuildModel(GradleRunner.kt:31)
	at org.nixos.gradle2nix.Main.run(Main.kt:128)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:139)
	at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:14)
	at com.github.ajalt.clikt.core.CliktCommand.parse(CliktCommand.kt:215)
	at com.github.ajalt.clikt.core.CliktCommand.parse$default(CliktCommand.kt:212)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:230)
	at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:253)
	at org.nixos.gradle2nix.MainKt.main(Main.kt:168)
Caused by: org.gradle.internal.exceptions.LocationAwareException: A problem occurred configuring project ':app'.
	at org.gradle.initialization.exception.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:99)
	at org.gradle.initialization.exception.DefaultExceptionAnalyser.collectFailures(DefaultExceptionAnalyser.java:62)
	at org.gradle.initialization.exception.MultipleBuildFailuresExceptionAnalyser.transform(MultipleBuildFailuresExceptionAnalyser.java:48)
	at org.gradle.initialization.exception.StackTraceSanitizingExceptionAnalyser.transform(StackTraceSanitizingExceptionAnalyser.java:30)
	at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:162)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:129)
	at org.gradle.initialization.DefaultGradleLauncher.getConfiguredBuild(DefaultGradleLauncher.java:100)
	at org.gradle.internal.invocation.GradleBuildController$2.execute(GradleBuildController.java:70)
	at org.gradle.internal.invocation.GradleBuildController$2.execute(GradleBuildController.java:67)
	at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:85)
	at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:78)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:189)
	at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
	at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:78)
	at org.gradle.internal.invocation.GradleBuildController.configure(GradleBuildController.java:67)
	at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:56)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:63)
	at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:51)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:50)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:47)
	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:78)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:47)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
	at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
	at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:59)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
	at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
	at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
	at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:68)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:27)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
	at org.gradle.util.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.
	at org.gradle.configuration.project.LifecycleProjectEvaluator.wrapException(LifecycleProjectEvaluator.java:80)
	at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:73)
	at org.gradle.configuration.project.LifecycleProjectEvaluator.access$600(LifecycleProjectEvaluator.java:53)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:199)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject$1.run(LifecycleProjectEvaluator.java:112)
	at org.gradle.internal.Factories$1.create(Factories.java:26)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:189)
	at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withProjectLock(DefaultProjectStateRegistry.java:227)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:221)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:187)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:96)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
	at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:68)
	at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:693)
	at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:141)
	at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:36)
	at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:64)
	at org.gradle.configuration.DefaultProjectsPreparer.prepareProjects(DefaultProjectsPreparer.java:55)
	at org.gradle.configuration.BuildOperatingFiringProjectsPreparer$ConfigureBuild.run(BuildOperatingFiringProjectsPreparer.java:52)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
	at org.gradle.configuration.BuildOperatingFiringProjectsPreparer.prepareProjects(BuildOperatingFiringProjectsPreparer.java:40)
	at org.gradle.initialization.DefaultGradleLauncher.prepareProjects(DefaultGradleLauncher.java:198)
	at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:138)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:126)
	... 75 more
Caused by: kotlin.KotlinNullPointerException
	at com.android.build.gradle.internal.tasks.databinding.DataBindingCompilerArguments$Companion.createArguments(DataBindingCompilerArguments.kt:170)
	at com.android.build.gradle.internal.tasks.databinding.DataBindingCompilerArguments.createArguments(DataBindingCompilerArguments.kt)
	at com.android.build.gradle.internal.TaskManager.setDataBindingAnnotationProcessorParams(TaskManager.java:2481)
	at com.android.build.gradle.internal.TaskManager.createDataBindingTasksIfNecessary(TaskManager.java:2455)
	at com.android.build.gradle.internal.ApplicationTaskManager.createTasksForVariantScope(ApplicationTaskManager.java:218)
	at com.android.build.gradle.internal.VariantManager.createTasksForVariantData(VariantManager.java:516)
	at com.android.build.gradle.internal.VariantManager.createAndroidTasks(VariantManager.java:392)
	at com.android.build.gradle.internal.plugins.BasePlugin.createAndroidTasks(BasePlugin.java:645)
	at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:82)
	at com.android.build.gradle.internal.plugins.BasePlugin.lambda$createTasks$4(BasePlugin.java:559)
	at com.android.build.gradle.internal.crash.CrashReporting$afterEvaluate$1.execute(crash_reporting.kt:37)
	at com.android.build.gradle.internal.crash.CrashReporting$afterEvaluate$1.execute(crash_reporting.kt)
	at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1$1.run(DefaultListenerBuildOperationDecorator.java:154)
	at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.reapply(DefaultUserCodeApplicationContext.java:60)
	at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.run(DefaultListenerBuildOperationDecorator.java:151)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
	at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction.execute(DefaultListenerBuildOperationDecorator.java:148)
	at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:92)
	at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:80)
	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
	at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:231)
	at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:150)
	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
	at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:325)
	at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:235)
	at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:141)
	at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at com.sun.proxy.$Proxy28.afterEvaluate(Unknown Source)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:191)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:188)
	at org.gradle.api.internal.project.DefaultProject.stepEvaluationListener(DefaultProject.java:1420)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:197)
	... 115 more

Reproduce by running gradle2nix on orgzly

@pstn I'm fairly confident that is the Android Databinding code failing to locate the Android SDK, which is an impurity in the build. I've been meaning to get gradle2nix working for Android projects; would you mind opening a separate issue for this?

Missing dependencies for Spring Boot project

If I create a Gradle Java project using https://start.spring.io with recent Gradle (6.7.1) and Spring (2.4.1), gradle2nix seems to miss POM-only *-bom and *-parent dependencies in the gradle-env.json it produces. It's a bit slow to go through and add them one by one, so I haven't got a complete list yet, but here are the missing deps so far:

spring-boot-dependencies-2.4.1.pom
java-driver-bom-4.9.0.pom
metrics-bom-4.1.16.pom
metrics-parent-4.1.16.pom
groovy-bom-2.5.14.pom
infinispan-bom-11.0.8.Final.pom
infinispan-build-configuration-parent-11.0.8.Final.pom
jboss-parent-36.pom
jackson-bom-2.11.3.pom
oss-parent-38.pom
jackson-parent-2.11.pom
jersey-bom-2.32.pom
jetty-bom-9.4.35.v20201120.pom
junit-bom-5.7.0.pom
kotlin-bom-1.4.21.pom
kotlinx-coroutines-bom-1.4.2.pom
log4j-bom-2.13.3.pom
logging-parent-1.pom
apache-18.pom
micrometer-bom-1.6.2.pom
netty-bom-4.1.55.Final.pom
ojdbc-bom-19.8.0.0.pom
r2dbc-bom-Arabba-SR8.pom

Edit: For what it's worth, this worked mostly fine with e0ebece, Gradle 5.4.1, and Gradle plugins org.springframework.boot:2.2.0.RELEASE and io.spring.dependency-management:1.0.10.RELEASE, and I only had to add in a few missed deps, not this many. Updating to Gradle 6.7 and Spring Boot 2.3.4 seems to have caused the problem to grow in a way that updating gradle2nix didn't fix.

Java needs to be installed independently?

Hello,

I tried to install gradle2nix using:

nix-env -if "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz"

and then I ran gradle2nix in a folder containing https://github.com/Audiveris/audiveris. But I get the error:

$ gradle2nix

ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

After installing the openjdk11 package, the error is gone, but it's a bit strange to me that I need to install another package, as I'd expect gradle2nix to link directly to the good jdk. Did I miss something? If yes, maybe a clarification in the README could be added.

Thanks!

bootstrap problem due to sha256 mismatches

How else can I generate the gradle-env.json ?

Doing a basic nix run .# -- --help fails with certain error: hash mismatch in fixed-output derivation latter which sha256 mismatches I can only change via tedious manual edits of gradle-env.json, hence the question.

build issue with gradle2nix for qupath

Hi,

I am trying to build the qupath project with gradle2nix. Running gradle2nix runs without issue, so does ./gradlew directly in the qupath directory. But if I want to build it using nix I get

warning: Git tree '/home/hhoeflin/nixpkgs-hhoeflin' is dirty
error: builder for '/nix/store/r8ra3dv5d16lj40l8j5f4bz1z7vbpmw4-qupath-unspecified.drv' failed with exit code 1;
       last 10 log lines:
       >        at java.lang.Thread.run(Thread.java:748)
       >
       >
       > * Get more help at https://help.gradle.org
       >
       > BUILD FAILED in 10s
       > 3 actionable tasks: 3 executed
       > Unable to list file systems to check whether they can be watched. The whole state of the virtual file system has been discarded. Reason: Could not query file systems: could not open mount file (errno 2: No such file or directory)
       > Some of the file system contents retained in the virtual file system are on file systems that Gradle doesn't support watching. The relevant state was discarded to ensure changes to these locations are properly detected. You can override this by explicitly enabling file system watching.
       > Watching 21 directories to track changes
       For full logs, run 'nix log /nix/store/r8ra3dv5d16lj40l8j5f4bz1z7vbpmw4-qupath-unspecified.drv'.

I don't know much about java, any help appreciated. Otherwise will have to use the prebuilt binary.

Thanks for any help

Gradle fails to find native-platform jar

Full error output

log.txt

steps to reproduce:

$ nix eval --impure --expr 'with import <nixpkgs> {}; lib.version'
"21.03.git.3a3da0950d5"
$ git clone https://github.com/thefinn93/signald
$ cd signald
$ cat shell.nix
with import <nixpkgs> {};
mkShell {
  nativeBuildInputs = [
    jdk
  ];
}
$ nix build --out-link foo -f "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz"
$ ./foo/bin/gradle2nix
Picked up _JAVA_OPTIONS: -Dsun.java2d.uiScale=2 -Dawt.useSystemAAFontSettings=lcd -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
Resolving project model: root project...
<=============> 100% CONFIGURING [9s]
> Building model 'org.nixos.gradle2nix.Build'

FAILURE: Build failed with an exception.

* What went wrong:
Failed to find native-platform jar in /home/joerg/.gradle/wrapper/dists/gradle-6.6.1-bin/du4tvj86lhti6iga1v8h7pckb/gradle-6.6.1.
Ask Tad to fix this.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
# ...
Caused by: java.lang.IllegalStateException: Failed to find native-platform jar in /home/joerg/.gradle/wrapper/dists/gradle-6.6.1-bin/du4tvj86lhti6iga1v8h7pckb/gradle-6.6.1.
Ask Tad to fix this.
        at org.nixos.gradle2nix.Gradle2NixPluginKt.buildGradle(Gradle2NixPlugin.kt:120)
        at org.nixos.gradle2nix.Gradle2NixPluginKt.buildModel(Gradle2NixPlugin.kt:101)
        at org.nixos.gradle2nix.Gradle2NixPluginKt.access$buildModel(Gradle2NixPlugin.kt:1)
        at org.nixos.gradle2nix.NixToolingModelBuilder.buildAll(Gradle2NixPlugin.kt:69)
        at org.nixos.gradle2nix.NixToolingModelBuilder.buildAll(Gradle2NixPlugin.kt:60)
        at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder$1$1.create(DefaultToolingModelBuilderRegistry.java:105)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry.withLenientState(DefaultProjectStateRegistry.java:134)
        at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder$1.call(DefaultToolingModelBuilderRegistry.java:101)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:409)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:399)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:242)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:150)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:94)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder.buildAll(DefaultToolingModelBuilderRegistry.java:98)
        at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner$BuildResultAdapter.buildModel(BuildModelActionRunner.java:100)
        at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner$BuildResultAdapter.buildFinished(BuildModelActionRunner.java:92)
        at jdk.internal.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:398)
        at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:380)
        at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
        at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:368)
        at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:355)
        at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
        at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:245)
        at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:157)
        at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
        at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:346)
        at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:249)
        at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:141)
        at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
        at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
        at com.sun.proxy.$Proxy20.buildFinished(Unknown Source)
        at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:200)
        ... 72 more

I currently don't see c libraries missing after I used export LD_DEBUG=libs. Do you see what is going wrong here?

Project status (abandoned?)

The last commit was in March 2021, and there are multiple important PRs open.

@tadfisher do you plan on maintaining this project any further, or should development continue on a fork?

Some working forks were already linked in other issues, but it would be great to have a central place where development of gradle2nix can go on.

Could not create an instance of type org.nixos.gradle2nix.PluginResolver

Using gradle2nix on a fresh kotlin hello-world project fails.

I am running nix run github:Tombert/gradle2nix because of #51.

The gradle project is created with gradle init, answering:

  • 2: application
  • 4: Kotlin
  • the rest is default

I am in a debian 12 container (from incus) with nix installed and using this gradle and java version: nix shell nixpkgs/2a34566b67bef34c551f204063faeecc444ae9da#jdk nixpkgs/2a34566b67bef34c551f204063faeecc444ae9da#gradle

Mismatching hashes and dependency versions for gradle2nix itself

I just tried to build gradle2nix with the command suggested in the README.md:

nix build -f "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz"

which always seems to give me a mismatching hash for different random parts of jackson.

For example with the latest nix docker image:

$ nix build -f "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz"
waiting for locks or build slots...
hash mismatch in fixed-output derivation '/nix/store/q4apxx0rdz72axxhi7c4gcghsf0vmj3d-jackson-core-2.11.0.rc1.pom':
  wanted: sha256:1jx8piydld4km6rhlxxzwwx70277nr75g7zbvkbg47zd2sm9ljk6
  got:    sha256:182jz7hf4b5ywphziw0647kl7r2y0fm49h9xnpv8w9vrsq27bqbc
cannot build derivation '/nix/store/q987m8dns0cbsrhz47xj1xdxh89kx9ja-jackson-core-2.11.0.rc1.pom.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/f6i3wy1p7q71gy68yb3qkbii2vpiwk5f-gradle2nix-gradle-plugin-env.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/8b19gkvn40l7l1valmyjdy89glrbf95c-init.gradle.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/cmnmm9sg2l6d7jwbizj2jvsys2kjpfhh-gradle2nix-1.0.0-rc2.drv': 1 dependencies couldn't be built
error: build of '/nix/store/cmnmm9sg2l6d7jwbizj2jvsys2kjpfhh-gradle2nix-1.0.0-rc2.drv' failed

And with my local machine running unstableNix:

$ nix build -f gradle2nix.nix
warning: unknown setting 'extra-sandbox-paths'
warning: unknown setting 'extra-sandbox-paths'
error: --- Error --- nix-daemon
hash mismatch in fixed-output derivation '/nix/store/rfmm7n5sqi52sbaaklvjqmk3dwjc7z0b-jackson-parent-2.11.pom.drv':
  specified: sha256-wbChPYz+Y7QLD66EWLmUYxae0MYPf8lj7z8FJXFQy+g=
     got:    sha256-YXSwNaEPVu8DtZPoLCjfnlMFVcJRiAFd1x+wu3k65RY=
error: --- Error --- nix-daemon
1 dependencies of derivation '/nix/store/4falvcj3mk9k2fwl1ygikzn4lm0gx9bz-jackson-parent-2.11.pom.drv' failed to build
error: --- Error --- nix-daemon
1 dependencies of derivation '/nix/store/nxlbrgh6k96l24gvmyqp8iq8194xvqhv-gradle2nix-gradle-plugin-env.drv' failed to build
error: --- Error --- nix-daemon
1 dependencies of derivation '/nix/store/043gm5jm164nq82a5fiwljcg0pyxx55w-init.gradle.drv' failed to build
error: --- Error ------------------------------------------------------------------------------------- nix
1 dependencies of derivation '/nix/store/s05zvjxgzs75gp8nl7syqy9flymm8nm5-gradle2nix-1.0.0-rc2.drv' failed to build

Looking into that a bit I saw that the jackson version in fixtures/basic/basic-kotlin-project/kotlin/build.gradle.kts also does not match the jackson version in gradle-env.json which looks wrong to me and leads me to think the mismatch might simply be because some version change got lost in either one of those files.

I have not looked into this further or actually gotten gradle2nix to build yet.

Buildscript deps generates paths to home directory

With kotlin project, gradle-env.json contains weird paths, that points to my local directory:

        {
          "id": {
            "group": "org.jetbrains.kotlin",
            "name": "kotlin-stdlib",
            "version": "1.3.20",
            "type": "jar",
            "extension": "jar"
          },
          "name": "kotlin-stdlib-1.3.20.jar",
          "path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.20",
          "urls": [
            "file:/home/anton/.gradle/caches/5.2.1/embedded-kotlin-repo-1.3.20-2/repo/org/jetbrains/kotlin/kotlin-stdlib/1.3.20/kotlin-stdlib-1.3.20.jar"
          ],
          "sha256": "601f910da968fb3da8ead7b64ed6bf5c9710d83cea37e4a631847e7d688e3361"
        }

Of course it is impossible to build, if I replace these paths with real urls everything works fine.

Source dependencies prevent builds

Hi, I'm trying to package MapTool, which includes a source dependency through its settings.gradle.

This results in:

maptool> Could not determine the dependencies of task ':distTar'.
maptool> > Could not resolve all task dependencies for configuration ':runtimeClasspath'.
maptool>    > Cannot resolve net.rptools.dicelib:dicelib:1.8.3 from Git repository at https://github.com/RPTools/dicelib.git in offline mode.
maptool>      Required by:
maptool>          project :

Given gradle/gradle#10588, I believe it's impossible to build any project that uses that feature using gradle2nix (and possibly nix in general)?

Full logs
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking sources
unpacking source archive /nix/store/lv2mnbvy4z2zg3gbjq6ijz5yrz118mg6-maptool
source root is maptool
@nix { "action": "setPhase", "phase": "patchPhase" }
patching sources
@nix { "action": "setPhase", "phase": "configurePhase" }
configuring
no configure script, doing nothing
@nix { "action": "setPhase", "phase": "buildPhase" }
building
+++ mktemp -d
++ TMPHOME=/build/tmp.koGKEzj3eb
++ mkdir -p /build/tmp.koGKEzj3eb/init.d
++ export GRADLE_USER_HOME=/build/tmp.koGKEzj3eb
++ GRADLE_USER_HOME=/build/tmp.koGKEzj3eb
++ cp /nix/store/n8cjvv8r49xhqcl8i0zf5pn1pw7a45d6-init.gradle /build/tmp.koGKEzj3eb/init.d
++ gradle --offline --no-daemon --no-build-cache --info --full-stacktrace --warning-mode=all --parallel -Dorg.gradle.java.home=/nix/store/fyxqjsb81r203sy72n16q4k14y32v4ys-openjdk-16+36/lib/openjdk --init-script /nix/store/n8cjvv8r49xhqcl8i0zf5pn1pw7a45d6-init.gradle build
Initialized native services in: /build/tmp.koGKEzj3eb/native

Welcome to Gradle 7.0!

Here are the highlights of this release:
 - File system watching enabled by default
 - Support for running with and building Java 16 projects
 - Native support for Apple Silicon processors
 - Dependency catalog feature preview

For more details see https://docs.gradle.org/7.0/release-notes.html

Starting process 'command '/nix/store/fyxqjsb81r203sy72n16q4k14y32v4ys-openjdk-16+36/lib/openjdk/bin/java''. Working directory: /build/tmp.koGKEzj3eb/.tmp/jvm4935123046965640690probe Command: /nix/store/fyxqjsb81r203sy72n16q4k14y32v4ys-openjdk-16+36/lib/openjdk/bin/java -cp . JavaProbe
Successfully started process 'command '/nix/store/fyxqjsb81r203sy72n16q4k14y32v4ys-openjdk-16+36/lib/openjdk/bin/java''
To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.0/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Starting process 'Gradle build daemon'. Working directory: /build/tmp.koGKEzj3eb/daemon/7.0 Command: /nix/store/fyxqjsb81r203sy72n16q4k14y32v4ys-openjdk-16+36/lib/openjdk/bin/java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.base/java.nio.charset=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED -XX:MaxMetaspaceSize=256m -XX:+HeapDumpOnOutOfMemoryError -Xms256m -Xmx512m -Dfile.encoding=US-ASCII -Duser.country=US -Duser.language=en -Duser.variant -cp /nix/store/cpxa1lsip7zz48zms7afdscwfi4fyjxz-gradle-7.0-bin/lib/gradle/lib/gradle-launcher-7.0.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 7.0
Successfully started process 'Gradle build daemon'
An attempt to start the daemon took 0.427 secs.
The client will now receive all logging from the daemon (pid: 70). The daemon log file: /build/tmp.koGKEzj3eb/daemon/7.0/daemon-70.out.log
Closing daemon's stdin at end of input.
The daemon will no longer process any standard input.
Daemon will be stopped at the end of the build 
Using 12 worker leases.
Watching the file system is enabled if available
Now considering [/build/maptool] as hierarchies to watch
Compiling initialization script '/nix/store/n8cjvv8r49xhqcl8i0zf5pn1pw7a45d6-init.gradle' using SubsetScriptTransformer.
Compiling initialization script '/nix/store/n8cjvv8r49xhqcl8i0zf5pn1pw7a45d6-init.gradle' using BuildScriptTransformer.
Starting Build
Compiling settings file '/build/maptool/settings.gradle' using SubsetScriptTransformer.
Compiling settings file '/build/maptool/settings.gradle' using BuildScriptTransformer.
Settings evaluated using settings file '/build/maptool/settings.gradle'.
Projects loaded. Root project using build file '/build/maptool/build.gradle'.
Included projects: [root project 'MapTool']

> Configure project :
Evaluating root project 'MapTool' using build file '/build/maptool/build.gradle'.
Compiling build file '/build/maptool/build.gradle' using SubsetScriptTransformer.
Project : => no module-info.java found
------------------------------------------------------------------------
Detecting the operating system and CPU architecture
------------------------------------------------------------------------
os.detected.name=linux
os.detected.arch=x86_64
os.detected.version=5.12
os.detected.version.major=5
os.detected.version.minor=12
os.detected.classifier=linux-x86_64
Compiling build file '/build/maptool/build.gradle' using BuildScriptTransformer.
Configuring for MapTool-Dev-Release SNAPSHOT-afd5d32 by RPTools
AppVersion: 0.0.1
OS Detected: linux
Setting Linux installer options
Build was configured to prefer settings repositories over project repositories but repository 'MavenLocal' was added by build file 'build.gradle'
Build was configured to prefer settings repositories over project repositories but repository 'MavenRepo' was added by build file 'build.gradle'
Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by build file 'build.gradle'
Build was configured to prefer settings repositories over project repositories but repository 'maven2' was added by build file 'build.gradle'
Build was configured to prefer settings repositories over project repositories but repository 'maven3' was added by build file 'build.gradle'
The AbstractArchiveTask.baseName property has been deprecated. This is scheduled to be removed in Gradle 8.0. Please use the archiveBaseName property instead. See https://docs.gradle.org/7.0/dsl/org.gradle.api.tasks.bundling.AbstractArchiveTask.html#org.gradle.api.tasks.bundling.AbstractArchiveTask:baseName for more details.
	at org.gradle.api.tasks.bundling.AbstractArchiveTask.setBaseName(AbstractArchiveTask.java:234)
	at org.gradle.api.tasks.bundling.Jar_Decorated.setBaseName(Unknown Source)
	at org.gradle.api.tasks.bundling.Jar_Decorated.baseName(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
	at org.gradle.internal.extensibility.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:34)
	at build_86ch5vnqxkqh5zv045zjvosfx$_run_closure9.doCall(/build/maptool/build.gradle:419)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1035)
	at groovy.lang.Closure.call(Closure.java:412)
	at groovy.lang.Closure.call(Closure.java:428)
	at org.gradle.util.ClosureBackedAction.execute(ClosureBackedAction.java:71)
	at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:154)
	at org.gradle.util.ConfigureUtil.configureSelf(ConfigureUtil.java:130)
	at org.gradle.api.internal.AbstractTask.configure(AbstractTask.java:616)
	at org.gradle.api.DefaultTask.configure(DefaultTask.java:307)
	at org.gradle.api.internal.project.DefaultProject.task(DefaultProject.java:1282)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
	at org.gradle.internal.extensibility.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:34)
	at org.gradle.groovy.scripts.BasicScript$ScriptDynamicObject.tryInvokeMethod(BasicScript.java:135)
	at org.gradle.groovy.scripts.BasicScript.invokeMethod(BasicScript.java:84)
	at build_86ch5vnqxkqh5zv045zjvosfx.run(/build/maptool/build.gradle:414)
	at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:91)
	at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.lambda$apply$0(DefaultScriptPluginFactory.java:133)
	at org.gradle.configuration.ProjectScriptTarget.addConfiguration(ProjectScriptTarget.java:77)
	at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:136)
	at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperationScriptPlugin.java:65)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
	at org.gradle.configuration.BuildOperationScriptPlugin.lambda$apply$0(BuildOperationScriptPlugin.java:62)
	at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:43)
	at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:62)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0(DefaultProjectStateRegistry.java:250)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:277)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:249)
	at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:42)
	at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
	at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:35)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.lambda$run$0(LifecycleProjectEvaluator.java:100)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0(DefaultProjectStateRegistry.java:250)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$withProjectLock$3(DefaultProjectStateRegistry.java:310)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withProjectLock(DefaultProjectStateRegistry.java:310)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:291)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:249)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:91)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
	at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:63)
	at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:723)
	at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:150)
	at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:41)
	at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:67)
	at org.gradle.configuration.DefaultProjectsPreparer.prepareProjects(DefaultProjectsPreparer.java:46)
	at org.gradle.configuration.BuildTreePreparingProjectsPreparer.prepareProjects(BuildTreePreparingProjectsPreparer.java:64)
	at org.gradle.configuration.BuildOperationFiringProjectsPreparer$ConfigureBuild.run(BuildOperationFiringProjectsPreparer.java:52)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
	at org.gradle.configuration.BuildOperationFiringProjectsPreparer.prepareProjects(BuildOperationFiringProjectsPreparer.java:40)
	at org.gradle.initialization.DefaultGradleLauncher.prepareProjects(DefaultGradleLauncher.java:226)
	at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:164)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
	at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:125)
	at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:71)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
	at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:67)
	at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:56)
	at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:31)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:66)
	at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
	at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:90)
	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:49)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:44)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:44)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.lambda$execute$0(InProcessBuildActionExecuter.java:59)
	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:86)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:58)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.lambda$execute$0(BuildTreeScopeLifecycleBuildActionExecuter.java:34)
	at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:53)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:33)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:28)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:104)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:55)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:64)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:37)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.lambda$execute$0(SessionScopeLifecycleBuildActionExecuter.java:54)
	at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:67)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:50)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:58)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
	at org.gradle.util.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:50)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
	at java.base/java.lang.Thread.run(Thread.java:831)
All projects evaluated.
Selected primary task 'build' from project :
Cache entries evicted. In-memory cache of /build/maptool/.gradle/checksums/md5-checksums.bin: Size{364} MaxSize{400}, CacheStats{hitCount=33, missCount=384, loadSuccessCount=365, loadExceptionCount=0, totalLoadTime=226625257, evictionCount=1} 
Performance may suffer from in-memory cache misses. Increase max heap size of Gradle build process to reduce cache misses.
Cache entries evicted. In-memory cache of /build/maptool/.gradle/checksums/sha1-checksums.bin: Size{364} MaxSize{400}, CacheStats{hitCount=406, missCount=381, loadSuccessCount=365, loadExceptionCount=0, totalLoadTime=170769331, evictionCount=1} 
Performance may suffer from in-memory cache misses. Increase max heap size of Gradle build process to reduce cache misses.
Closing Git repo: /build/maptool/.git

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':distTar'.
> Could not resolve all task dependencies for configuration ':runtimeClasspath'.
   > Cannot resolve net.rptools.dicelib:dicelib:1.8.3 from Git repository at https://github.com/RPTools/dicelib.git in offline mode.
     Required by:
         project :

* Try:
Run with --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.internal.tasks.TaskDependencyResolveException: Could not determine the dependencies of task ':distTar'.
	at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.getDependencies(CachingTaskDependencyResolveContext.java:71)
	at org.gradle.execution.plan.TaskDependencyResolver.resolveDependenciesFor(TaskDependencyResolver.java:46)
	at org.gradle.execution.plan.LocalTaskNode.getDependencies(LocalTaskNode.java:163)
	at org.gradle.execution.plan.LocalTaskNode.resolveDependencies(LocalTaskNode.java:131)
	at org.gradle.execution.plan.DefaultExecutionPlan.doAddNodes(DefaultExecutionPlan.java:186)
	at org.gradle.execution.plan.DefaultExecutionPlan.addEntryTasks(DefaultExecutionPlan.java:150)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.addEntryTasks(DefaultTaskExecutionGraph.java:157)
	at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:49)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:55)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:26)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:63)
	at org.gradle.execution.DefaultTasksBuildExecutionAction.configure(DefaultTasksBuildExecutionAction.java:45)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:55)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:26)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:63)
	at org.gradle.execution.ExcludedTaskFilteringBuildConfigurationAction.configure(ExcludedTaskFilteringBuildConfigurationAction.java:48)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:55)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.lambda$select$0(DefaultBuildConfigurationActionExecuter.java:42)
	at org.gradle.internal.Factories$1.create(Factories.java:31)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry.withMutableStateOfAllProjects(DefaultProjectStateRegistry.java:141)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry.withMutableStateOfAllProjects(DefaultProjectStateRegistry.java:128)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.select(DefaultBuildConfigurationActionExecuter.java:40)
	at org.gradle.initialization.DefaultTaskExecutionPreparer.prepareForTaskExecution(DefaultTaskExecutionPreparer.java:38)
	at org.gradle.initialization.BuildOperationFiringTaskExecutionPreparer$CalculateTaskGraph.populateTaskGraph(BuildOperationFiringTaskExecutionPreparer.java:117)
	at org.gradle.initialization.BuildOperationFiringTaskExecutionPreparer$CalculateTaskGraph.run(BuildOperationFiringTaskExecutionPreparer.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
	at org.gradle.initialization.BuildOperationFiringTaskExecutionPreparer.prepareForTaskExecution(BuildOperationFiringTaskExecutionPreparer.java:56)
	at org.gradle.initialization.DefaultGradleLauncher.prepareTaskExecution(DefaultGradleLauncher.java:233)
	at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:168)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
	at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:125)
	at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:71)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
	at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:67)
	at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:56)
	at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:31)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:66)
	at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
	at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:90)
	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:49)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:44)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:44)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.lambda$execute$0(InProcessBuildActionExecuter.java:59)
	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:86)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:58)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.lambda$execute$0(BuildTreeScopeLifecycleBuildActionExecuter.java:34)
	at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:53)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:33)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:28)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:104)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:55)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:64)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:37)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.lambda$execute$0(SessionScopeLifecycleBuildActionExecuter.java:54)
	at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:67)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:50)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:58)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
	at org.gradle.util.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:50)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
	at java.base/java.lang.Thread.run(Thread.java:831)
Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all task dependencies for configuration ':runtimeClasspath'.
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.rethrowFailure(DefaultConfiguration.java:1420)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$3600(DefaultConfiguration.java:150)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$DefaultResolutionHost.rethrowFailure(DefaultConfiguration.java:2032)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.visitDependencies(DefaultConfiguration.java:1378)
	at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext$TaskGraphImpl.getNodeValues(CachingTaskDependencyResolveContext.java:114)
	at org.gradle.internal.graph.CachingDirectedGraphWalker$GraphWithEmptyEdges.getNodeValues(CachingDirectedGraphWalker.java:213)
	at org.gradle.internal.graph.CachingDirectedGraphWalker.doSearch(CachingDirectedGraphWalker.java:121)
	at org.gradle.internal.graph.CachingDirectedGraphWalker.findValues(CachingDirectedGraphWalker.java:73)
	at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.getDependencies(CachingTaskDependencyResolveContext.java:69)
	... 116 more
Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Cannot resolve net.rptools.dicelib:dicelib:1.8.3 from Git repository at https://github.com/RPTools/dicelib.git in offline mode.
Required by:
    project :


* Get more help at https://help.gradle.org

BUILD FAILED in 8s
Unable to watch the file system for changes
net.rubygrapefruit.platform.NativeException: Could not query file systems: could not open mount file (errno 2: No such file or directory)
	at net.rubygrapefruit.platform.internal.PosixFileSystems.getFileSystems(PosixFileSystems.java:32)
	at org.gradle.internal.watch.vfs.impl.DefaultWatchableFileSystemDetector.detectUnsupportedFileSystems(DefaultWatchableFileSystemDetector.java:64)
	at org.gradle.internal.watch.registry.impl.WatchableHierarchies.removeUnwatchableFileSystems(WatchableHierarchies.java:113)
	at org.gradle.internal.watch.registry.impl.WatchableHierarchies.removeUnwatchableContent(WatchableHierarchies.java:82)
	at org.gradle.internal.watch.registry.impl.NonHierarchicalFileWatcherUpdater.buildFinished(NonHierarchicalFileWatcherUpdater.java:99)
	at org.gradle.internal.watch.registry.impl.DefaultFileWatcherRegistry.buildFinished(DefaultFileWatcherRegistry.java:146)
	at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem$2.lambda$call$0(WatchingVirtualFileSystem.java:199)
	at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem.withWatcherChangeErrorHandling(WatchingVirtualFileSystem.java:320)
	at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem.access$1000(WatchingVirtualFileSystem.java:53)
	at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem$2.call(WatchingVirtualFileSystem.java:199)
	at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem$2.call(WatchingVirtualFileSystem.java:179)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem.lambda$beforeBuildFinished$5(WatchingVirtualFileSystem.java:179)
	at org.gradle.internal.vfs.impl.VfsRootReference.update(VfsRootReference.java:40)
	at org.gradle.internal.watch.vfs.impl.WatchingVirtualFileSystem.beforeBuildFinished(WatchingVirtualFileSystem.java:179)
	at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:93)
	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:49)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:44)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:44)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.lambda$execute$0(InProcessBuildActionExecuter.java:59)
	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:86)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:58)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.lambda$execute$0(BuildTreeScopeLifecycleBuildActionExecuter.java:34)
	at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:53)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:33)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:28)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:104)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:55)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:64)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:37)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.lambda$execute$0(SessionScopeLifecycleBuildActionExecuter.java:54)
	at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:67)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:50)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:58)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
	at org.gradle.util.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:50)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
	at java.lang.Thread.run(Thread.java:831)

gradle2nix hangs with Mindustry v99

Tried running gradle2nix on https://github.com/Anuken/Mindustry/tree/v99 with
nix-shell -p jre --run '../g2n resulting in

Resolving project model: root project...
Downloading https://services.gradle.org/distributions/gradle-5.5-bin.zip
.....................................................................................
No local.properties found. Not loading Android module.

at which point it seemed to hang.

See NixOS/nixpkgs#72198 (comment) for the packaging discussion of Mindustry.

gradle2nix is very slow on rundeck

I tried running it on e.g. https://github.com/rundeck/rundeck, and it took 1h 10m 51s to complete.

Is it expected to be this slow? I tried checking to see if I could increase the verbosity somehow but it looks like the only option is quiet, to reduce the verbosity, not to make it any shoutier.

It then appeared to miss some deps anyway:

* What went wrong:
A problem occurred evaluating project ':docker'.
> A problem occurred configuring project ':rundeckapp'.
   > Could not resolve all artifacts for configuration ':rundeckapp:classpath'.
      > Could not resolve io.spring.gradle:dependency-management-plugin:0.6.1.RELEASE.
        Required by:
            project :rundeckapp > org.grails:grails-gradle-plugin:4.0.3
         > No cached version of io.spring.gradle:dependency-management-plugin:0.6.1.RELEASE available for offline mode.
         > No cached version of io.spring.gradle:dependency-management-plugin:0.6.1.RELEASE available for offline mode.
      > Could not resolve javax.xml.bind:jaxb-api:2.3.0.
        Required by:
            project :rundeckapp > org.grails.plugins:database-migration:3.1.1.BUILD-SNAPSHOT:20201015.064425-2 > org.liquibase:liquibase-core:3.10.1
         > No cached version of javax.xml.bind:jaxb-api:2.3.0 available for offline mode.
         > No cached version of javax.xml.bind:jaxb-api:2.3.0 available for offline mode.
      > Could not resolve org.codehaus.plexus:plexus-classworlds:1.2-alpha-10.
        Required by:
            project :rundeckapp > org.grails:grails-gradle-plugin:4.0.3 > org.grails:grails-shell:4.0.3 > org.codehaus.plexus:plexus-component-api:1.0-alpha-33
         > No cached version of org.codehaus.plexus:plexus-classworlds:1.2-alpha-10 available for offline mode.
         > No cached version of org.codehaus.plexus:plexus-classworlds:1.2-alpha-10 available for offline mode.

Relationship with Gradle dependency locking

Hi, I'm just wondering how this tool fits in with Gradle's native dependency locking. Is this mostly meant for the case when the target package does not use the native Gradle locking and it needs to be packaged in nixpkgs? This repo uses both, are there advantages to doing that?

Stutter not found by gradle post revision dc9d1bf

First off, this looks like a great attempt! From looking at the code there isn't anything too complicated: get a project connection, build the model from there, map it to some json, and read that into Nix at nix build time.

When demoing this project for myself I ran into an issue building:

{ pkgs ? import <nixpkgs> {} }:

let
  fetchgit = pkgs.fetchgit;
  workingRevision = {
    rev = "dc9d1bfda6f3d590a8353a89dfb86608a7fb2b6b";
    sha256 = "0hyfa750d7mfgwb34vch9nqdha1dkpw16nnsxignrn92wb40z6h2";
  };
  notWorkingRevision = {
    rev = "13a84d7518f95b2fafc56713706e3ee9372f028c";
    sha256 = "0skahn25c5wjycsdd5vnnxz96i6dx2mv2sxzxgpz38darr54gg41";
  };
  src = fetchgit ({
    url = "https://github.com/tadfisher/gradle2nix";
  } // notWorkingRevision);
in import "${src}/default.nix" { inherit pkgs; }

stacktrace of the non working revision:

these derivations will be built:
  /nix/store/wj71sih4jm5d5ak2ahsqdvnwl534ygsb-gradle2nix-1.0.drv
building '/nix/store/wj71sih4jm5d5ak2ahsqdvnwl534ygsb-gradle2nix-1.0.drv'...
unpacking sources
unpacking source archive /nix/store/qnajpf1azg08p8dvrwccgizsim3qc7c8-p960i9p1hjks4q1jm0gv13vjbfv78vdr-gradle2nix-13a84d7
source root is p960i9p1hjks4q1jm0gv13vjbfv78vdr-gradle2nix-13a84d7
patching sources
configuring
no configure script, doing nothing
building
Initialized native services in: /build/tmp.gTX7QpRvTz/native

Welcome to Gradle 5.4.1!

Here are the highlights of this release:
 - Run builds with JDK12
 - New API for Incremental Tasks
 - Updates to native projects, including Swift 5 support

For more details see https://docs.gradle.org/5.4.1/release-notes.html

Using 4 worker leases.
Starting Build
Compiling initialization script '/nix/store/w4plz7cijp0b8p60dg9gby300anm48fs-init.gradle' using SubsetScriptTransformer.
Compiling initialization script '/nix/store/w4plz7cijp0b8p60dg9gby300anm48fs-init.gradle' using BuildScriptTransformer.
Generating /build/tmp.gTX7QpRvTz/caches/5.4.1/generated-gradle-jars/gradle-api-5.4.1.jar
w: /tmp/gradle-kotlin-dsl-extensions-5.4633021468261801480416525059466775102301jar/org/gradle/kotlin/dsl/GradleApiKotlinDslExtensions23.kt:39:47: 'VariantTransform' is deprecated. Deprecated in Java
w: /tmp/gradle-kotlin-dsl-extensions-5.4633021468261801480416525059466775102301jar/org/gradle/kotlin/dsl/GradleApiKotlinDslExtensions23.kt:39:153: 'ArtifactTransform' is deprecated. Deprecated in Java
w: /tmp/gradle-kotlin-dsl-extensions-5.4633021468261801480416525059466775102301jar/org/gradle/kotlin/dsl/GradleApiKotlinDslExtensions23.kt:49:47: 'VariantTransform' is deprecated. Deprecated in Java
w: /tmp/gradle-kotlin-dsl-extensions-5.4633021468261801480416525059466775102301jar/org/gradle/kotlin/dsl/GradleApiKotlinDslExtensions23.kt:49:153: 'ArtifactTransform' is deprecated. Deprecated in Java
Settings evaluated using settings file '/build/p960i9p1hjks4q1jm0gv13vjbfv78vdr-gradle2nix-13a84d7/settings.gradle.kts'.
Projects loaded. Root project using build file '/build/p960i9p1hjks4q1jm0gv13vjbfv78vdr-gradle2nix-13a84d7/build.gradle.kts'.
Included projects: [root project 'p960i9p1hjks4q1jm0gv13vjbfv78vdr-gradle2nix-13a84d7', project ':app', project ':model', project ':plugin']

> Configure project :
Evaluating root project 'p960i9p1hjks4q1jm0gv13vjbfv78vdr-gradle2nix-13a84d7' using build file '/build/p960i9p1hjks4q1jm0gv13vjbfv78vdr-gradle2nix-13a84d7/build.gradle.kts'.

FAILURE: Build failed with an exception.

* Where:
Build file '/build/p960i9p1hjks4q1jm0gv13vjbfv78vdr-gradle2nix-13a84d7/build.gradle.kts' line: 1

* What went wrong:
Plugin [id: 'org.ajoberstar.stutter', version: '0.5.0', apply: false] was not found in any of the following sources:

- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'org.ajoberstar.stutter:org.ajoberstar.stutter.gradle.plugin:0.5.0')
  Searched in the following repositories:
    maven(file:/nix/store/lskhp3s0wzzbxk7d5dyngih1xv2j1mb2-gradle-env---plugins/)

* Try:
Run with --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.plugins.UnknownPluginException: Plugin [id: 'org.ajoberstar.stutter', version: '0.5.0', apply: false] was not found in any of the following sources:

- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'org.ajoberstar.stutter:org.ajoberstar.stutter.gradle.plugin:0.5.0')
  Searched in the following repositories:
    maven(file:/nix/store/lskhp3s0wzzbxk7d5dyngih1xv2j1mb2-gradle-env---plugins/)
        at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.resolveToFoundResult(DefaultPluginRequestApplicator.java:262)
        at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.access$100(DefaultPluginRequestApplicator.java:63)
        at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator$1.transform(DefaultPluginRequestApplicator.java:91)
        at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator$1.transform(DefaultPluginRequestApplicator.java:88)
        at org.gradle.util.CollectionUtils.collect(CollectionUtils.java:205)
        at org.gradle.util.CollectionUtils.collect(CollectionUtils.java:200)
        at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.applyPlugins(DefaultPluginRequestApplicator.java:88)
        at org.gradle.kotlin.dsl.provider.PluginRequestsHandler.handle(PluginRequestsHandler.kt:49)
        at org.gradle.kotlin.dsl.provider.StandardKotlinScriptEvaluator$InterpreterHost.applyPluginsTo(KotlinScriptEvaluator.kt:190)
        at org.gradle.kotlin.dsl.execution.Interpreter$ProgramHost.applyPluginsTo(Interpreter.kt:364)
        at Program.execute(Unknown Source)
        at org.gradle.kotlin.dsl.execution.Interpreter$ProgramHost.eval(Interpreter.kt:506)
        at org.gradle.kotlin.dsl.execution.Interpreter.eval(Interpreter.kt:206)
        at org.gradle.kotlin.dsl.provider.StandardKotlinScriptEvaluator.evaluate(KotlinScriptEvaluator.kt:114)
        at org.gradle.kotlin.dsl.provider.KotlinScriptPluginFactory$create$1.invoke(KotlinScriptPluginFactory.kt:51)
        at org.gradle.kotlin.dsl.provider.KotlinScriptPluginFactory$create$1.invoke(KotlinScriptPluginFactory.kt:36)
        at org.gradle.kotlin.dsl.provider.KotlinScriptPlugin.apply(KotlinScriptPlugin.kt:34)
        at org.gradle.configuration.BuildOperationScriptPlugin$1$1.run(BuildOperationScriptPlugin.java:69)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.configuration.BuildOperationScriptPlugin$1.execute(BuildOperationScriptPlugin.java:66)
        at org.gradle.configuration.BuildOperationScriptPlugin$1.execute(BuildOperationScriptPlugin.java:63)
        at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:48)
        at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:63)
        at org.gradle.configuration.project.BuildScriptProcessor$1.run(BuildScriptProcessor.java:44)
        at org.gradle.internal.Factories$1.create(Factories.java:25)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:200)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:186)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:41)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
        at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject$1.run(LifecycleProjectEvaluator.java:106)
        at org.gradle.internal.Factories$1.create(Factories.java:25)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
        at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withProjectLock(DefaultProjectStateRegistry.java:226)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:220)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:186)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:95)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:67)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:695)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:143)
        at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
        at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:60)
        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:41)
        at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuild.run(DefaultGradleLauncher.java:302)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.initialization.DefaultGradleLauncher.configureBuild(DefaultGradleLauncher.java:210)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
        at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:134)
        at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:58)
        at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:55)
        at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:82)
        at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:75)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
        at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
        at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:75)
        at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:55)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:31)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:58)
        at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
        at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:51)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:45)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:49)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:46)
        at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:78)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:46)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:59)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:36)
        at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
        at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
        at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:55)
        at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:208)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:394)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:367)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:37)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:23)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:360)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:292)
        at org.gradle.launcher.Main.doAction(Main.java:36)
        at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:60)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:37)
        at org.gradle.launcher.GradleMain.main(GradleMain.java:23)


* Get more help at https://help.gradle.org

BUILD FAILED in 29s
builder for '/nix/store/wj71sih4jm5d5ak2ahsqdvnwl534ygsb-gradle2nix-1.0.drv' failed with exit code 1
error: build of '/nix/store/wj71sih4jm5d5ak2ahsqdvnwl534ygsb-gradle2nix-1.0.drv' failed

Revision 13a84 adds the stutter dependency as a gradle plugin, but it looks like it's added in 987c036 in the json file, though I can't get that to build either.

I'm wondering if any of these commits after dc9d1bf build for you?

Also, after building that commit all I can see is a gradle wrapper-esque file called gradle2nix in ./bin. I'm not sure if that's expected or usage is different.

Error on nix shell gradle2nix v2

Running into an error when I try v2 branch of gradle2nix in a nix shell. #62

Something about libnative-platform.so.

Log included in collapsed details:

Log output for nix shell -L github:tadfisher/gradle2nix/v2
nix shell -L github:tadfisher/gradle2nix/v2
gradle2nix> Running phase: unpackPhase
gradle2nix> unpacking source archive /nix/store/gk4hk5g8v7zksj56m4gdf23v87y4xp7s-source
gradle2nix> source root is source
gradle2nix> Running phase: patchPhase
gradle2nix> Running phase: updateAutotoolsGnuConfigScriptsPhase
gradle2nix> Running phase: configurePhase
gradle2nix> no configure script, doing nothing
gradle2nix> Running phase: buildPhase
gradle2nix> ++ export NIX_OFFLINE_REPO=/nix/store/6r515q0yzjglkryrk5279fyrb936bbzp-gradle2nix-2.0.0-gradle-repo
gradle2nix> ++ NIX_OFFLINE_REPO=/nix/store/6r515q0yzjglkryrk5279fyrb936bbzp-gradle2nix-2.0.0-gradle-repo
gradle2nix> ++ gradle --offline --no-daemon --no-build-cache --no-watch-fs --info --full-stacktrace --warning-mode=all --no-configuration-cache --console=plain -Dmaven.repo.local=/nix/store/6r515q0yzjglkryrk5279fyrb936bbzp-gradle2nix-2.0.0-gradle-repo --parallel --init-script /nix/store/w6n50fq75ch7a47pq66078hav3yks7h4-init.gradle installDist
gradle2nix> FAILURE: Build failed with an exception.
gradle2nix> * What went wrong:
gradle2nix> Gradle could not start your build.
gradle2nix> > Could not initialize native services.
gradle2nix>    > Failed to load native library 'libnative-platform.so' for Linux amd64.
gradle2nix> * Try:
gradle2nix> > Run with --debug option to get more log output.
gradle2nix> > Run with --scan to get full insights.
gradle2nix> > Get more help at https://help.gradle.org.
gradle2nix> * Exception is:
gradle2nix> org.gradle.initialization.exception.InitializationException: Gradle could not start your build.
gradle2nix>     at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:49)
gradle2nix>     at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:26)
gradle2nix>     at org.gradle.launcher.cli.DefaultCommandLineActionFactory$WithLogging.execute(DefaultCommandLineActionFactory.java:361)
gradle2nix>     at org.gradle.launcher.Main.doAction(Main.java:35)
gradle2nix>     at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:50)
gradle2nix>     at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
gradle2nix>     at java.base/java.lang.reflect.Method.invoke(Method.java:580)
gradle2nix>     at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:60)
gradle2nix>     at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:37)
gradle2nix>     at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
gradle2nix>     at java.base/java.lang.reflect.Method.invoke(Method.java:580)
gradle2nix>     at org.gradle.launcher.GradleMain.main(GradleMain.java:34)
gradle2nix> Caused by: org.gradle.internal.service.ServiceCreationException: Could not initialize native services.
gradle2nix>     at org.gradle.internal.nativeintegration.services.NativeServices.initialize(NativeServices.java:168)
gradle2nix>     at org.gradle.internal.nativeintegration.services.NativeServices.initializeOnClient(NativeServices.java:136)
gradle2nix>     at org.gradle.launcher.cli.NativeServicesInitializingAction.execute(NativeServicesInitializingAction.java:42)
gradle2nix>     at org.gradle.launcher.cli.NativeServicesInitializingAction.execute(NativeServicesInitializingAction.java:26)
gradle2nix>     at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:41)
gradle2nix>     ... 11 more
gradle2nix> Caused by: net.rubygrapefruit.platform.NativeException: Failed to load native library 'libnative-platform.so' for Linux amd64.
gradle2nix>     at net.rubygrapefruit.platform.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:67)
gradle2nix>     at net.rubygrapefruit.platform.Native.init(Native.java:56)
gradle2nix>     at org.gradle.internal.nativeintegration.services.NativeServices.initializeNativeIntegrations(NativeServices.java:179)
gradle2nix>     at org.gradle.internal.nativeintegration.services.NativeServices.initialize(NativeServices.java:164)
gradle2nix>     ... 15 more
gradle2nix> Caused by: java.io.IOException: No such file or directory
gradle2nix>     at java.base/java.io.UnixFileSystem.createFileExclusively0(Native Method)
gradle2nix>     at java.base/java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:258)
gradle2nix>     at java.base/java.io.File.createNewFile(File.java:1045)
gradle2nix>     at net.rubygrapefruit.platform.internal.NativeLibraryLocator.find(NativeLibraryLocator.java:45)
gradle2nix>     at net.rubygrapefruit.platform.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:45)
gradle2nix>     ... 18 more
error: builder for '/nix/store/k0ffa488fr2x6kmzs2w4b7db1j7jznnc-gradle2nix-2.0.0.drv' failed with exit code 1;
       last 10 log lines:
       >        at org.gradle.internal.nativeintegration.services.NativeServices.initialize(NativeServices.java:164)
       >        ... 15 more
       > Caused by: java.io.IOException: No such file or directory
       >        at java.base/java.io.UnixFileSystem.createFileExclusively0(Native Method)
       >        at java.base/java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:258)
       >        at java.base/java.io.File.createNewFile(File.java:1045)
       >        at net.rubygrapefruit.platform.internal.NativeLibraryLocator.find(NativeLibraryLocator.java:45)
       >        at net.rubygrapefruit.platform.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:45)
       >        ... 18 more
       >
       For full logs, run 'nix log /nix/store/k0ffa488fr2x6kmzs2w4b7db1j7jznnc-gradle2nix-2.0.0.drv'.

Fails with a mysterious `Could not resolve all dependencies for configuration` error

When trying to write an expression for ZAP 2.9.0, I encounter the following error:

Toggle error log
[nix-shell:~/Workspace/tools/zap/zaproxy]$ ~/result/bin/gradle2nix
Resolving project model: root project...

> Task :buildSrc:compileKotlin
The `kotlin-dsl` plugin applied to project ':buildSrc' enables experimental Kotlin compiler features. For more information see https://docs.gradle.org/5.4.1/userguide/kotlin_dsl.html#sec:kotlin-dsl_plugin
<======-------> 50% CONFIGURING [46s]
> Building buildSrc > :buildSrc:generateExternalPluginSpecBuilders > Resolve fi
> Building buildSrc > :buildSrc:generateExternalPluginSpecBuilders > Resolve fi
> :zap
> Building buildSrc > :buildSrc:spotlessKotlinGradle > Resolve files of :buildS

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all dependencies for configuration 'detachedConfiguration1'.
> Could not find com.diffplug.gradle.spotless:com.diffplug.gradle.spotless.gradle.plugin:.
  Required by:
      unspecified:unspecified:unspecified
> Could not find me.champeau.gradle.japicmp:me.champeau.gradle.japicmp.gradle.plugin:.
  Required by:
      unspecified:unspecified:unspecified
> Could not find org.zaproxy.zap.distributions:org.zaproxy.zap.distributions.gradle.plugin:.
  Required by:
      unspecified:unspecified:unspecified
> Could not find org.zaproxy.zap.installers:org.zaproxy.zap.installers.gradle.plugin:.
  Required by:
      unspecified:unspecified:unspecified
> Could not find org.zaproxy.zap.github-releases:org.zaproxy.zap.github-releases.gradle.plugin:.
  Required by:
      unspecified:unspecified:unspecified
> Could not find org.zaproxy.zap.publish:org.zaproxy.zap.publish.gradle.plugin:.
  Required by:
      unspecified:unspecified:unspecified
> Could not find org.zaproxy.zap.spotless:org.zaproxy.zap.spotless.gradle.plugin:.
  Required by:
      unspecified:unspecified:unspecified

* Try:
Exception in thread "main" org.gradle.tooling.BuildException: Could not fetch model of type 'Build' using Gradle distribution 'https://services.gradle.org/distributions/gradle-5.4.1-all.zip'.
        at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:51)
        at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:29)
        at org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:43)
        at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor.lambda$run$0(DefaultAsyncConsumerActionExecutor.java:57)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
        at java.lang.Thread.run(Thread.java:748)
        at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
        at org.gradle.tooling.internal.consumer.DefaultModelBuilder.get(DefaultModelBuilder.java:51)
        at org.nixos.gradle2nix.GradleRunnerKt.getBuildModel(GradleRunner.kt:31)
        at org.nixos.gradle2nix.Main.run(Main.kt:128)
        at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:139)
        at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:14)
        at com.github.ajalt.clikt.core.CliktCommand.parse(CliktCommand.kt:215)
        at com.github.ajalt.clikt.core.CliktCommand.parse$default(CliktCommand.kt:212)
        at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:230)
        at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:253)
        at org.nixos.gradle2nix.MainKt.main(Main.kt:168)
Caused by: org.gradle.internal.exceptions.LocationAwareException: Could not resolve all dependencies for configuration 'detachedConfiguration1'.
        at org.gradle.initialization.exception.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:99)
        at org.gradle.initialization.exception.DefaultExceptionAnalyser.collectFailures(DefaultExceptionAnalyser.java:65)
        at org.gradle.initialization.exception.MultipleBuildFailuresExceptionAnalyser.transform(MultipleBuildFailuresExceptionAnalyser.java:39)
        at org.gradle.initialization.exception.StackTraceSanitizingExceptionAnalyser.transform(StackTraceSanitizingExceptionAnalyser.java:29)
        at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:194)
        at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:141)
        at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:83)
        at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:75)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
        at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
        at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:75)
        at org.gradle.internal.invocation.GradleBuildController.configure(GradleBuildController.java:64)
        at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:56)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:58)
        at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
        at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:51)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:45)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:49)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:46)
        at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:78)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:46)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:59)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:36)
        at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
        at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.api.artifacts.ResolveException: Could not resolve all dependencies for configuration 'detachedConfiguration1'.
        at org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration.getFailure(DefaultLenientConfiguration.java:143)
        at org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration.rethrowFailure(DefaultLenientConfiguration.java:156)
        at org.gradle.api.internal.artifacts.ivyservice.DefaultResolvedConfiguration.rethrowFailure(DefaultResolvedConfiguration.java:43)
        at org.gradle.api.internal.artifacts.ivyservice.DefaultResolvedConfiguration.getFirstLevelModuleDependencies(DefaultResolvedConfiguration.java:66)
        at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingConfigurationResolver$ErrorHandlingResolvedConfiguration.getFirstLevelModuleDependencies(ErrorHandlingConfigurationResolver.java:287)
        at org.nixos.gradle2nix.ConfigurationResolver.resolve(ConfigurationResolver.kt:57)
        at org.nixos.gradle2nix.PluginResolver.resolve(PluginResolver.kt:24)
        at org.nixos.gradle2nix.Gradle2NixPluginKt.buildPlugins(Gradle2NixPlugin.kt:130)
        at org.nixos.gradle2nix.Gradle2NixPluginKt.buildModel(Gradle2NixPlugin.kt:88)
        at org.nixos.gradle2nix.Gradle2NixPluginKt.access$buildModel(Gradle2NixPlugin.kt:1)
        at org.nixos.gradle2nix.NixToolingModelBuilder.buildAll(Gradle2NixPlugin.kt:69)
        at org.nixos.gradle2nix.NixToolingModelBuilder.buildAll(Gradle2NixPlugin.kt:60)
        at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder$1$1.create(DefaultToolingModelBuilderRegistry.java:102)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry.withLenientState(DefaultProjectStateRegistry.java:132)
        at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder$1.call(DefaultToolingModelBuilderRegistry.java:98)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder.buildAll(DefaultToolingModelBuilderRegistry.java:95)
        at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner$BuildResultAdapter.buildModel(BuildModelActionRunner.java:100)
        at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner$BuildResultAdapter.buildFinished(BuildModelActionRunner.java:92)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:376)
        at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:358)
        at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
        at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:346)
        at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:333)
        at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
        at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
        at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
        at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
        at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:324)
        at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:234)
        at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:140)
        at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
        at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
        at com.sun.proxy.$Proxy12.buildFinished(Unknown Source)
        at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:179)
        ... 73 more
Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find com.diffplug.gradle.spotless:com.diffplug.gradle.spotless.gradle.plugin:.
Required by:
    unspecified:unspecified:unspecified

Unfortunately, I never used Gradle in my life, and could not find any lead on how to fix this issue after looking around for potential solutions...

It would be awesome if you could help on that.

Here are (hopefully) helpful resources:

v2: missing plugin in gradle.lock

I have tried packaging ATLauncher with a simple script given below:

buildGradlePackage {
  inherit pname version src;
  lockFile = ./gradle.lock;
}

FWIW, I ran nix build -f "https://github.com/tadfisher/gradle2nix/archive/v2.tar.gz" to get the gradle2nix executable to generate the lock file.

When I run this derivation, I get the following error:

Error
@nix { "action": "setPhase", "phase": "unpackPhase" }
Running phase: unpackPhase
unpacking source archive /nix/store/0rdrzs99vwzxd2wm0c8fsln7aplinqxw-source
source root is source
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "configurePhase" }
Running phase: configurePhase
no configure script, doing nothing
@nix { "action": "setPhase", "phase": "buildPhase" }
Running phase: buildPhase
++ export NIX_OFFLINE_REPO=/nix/store/nxs0r7zli8sjl9y4vzf1wi5hdl5bmcfg-atlauncher-3.4.36.5-gradle-repo
++ NIX_OFFLINE_REPO=/nix/store/nxs0r7zli8sjl9y4vzf1wi5hdl5bmcfg-atlauncher-3.4.36.5-gradle-repo
+++ mktemp -d
++ export GRADLE_USER_HOME=/build/tmp.USK9zYbGAj
++ GRADLE_USER_HOME=/build/tmp.USK9zYbGAj
++ gradle --console=plain --no-build-cache --no-configuration-cache --no-daemon --no-watch-fs --offline --parallel --init-script=/nix/store/b91yhihd33ripfhcblgf24v1rb3jnck8-init.gradle --inf>
Initialized native services in: /build/tmp.USK9zYbGAj/native
Initialized jansi services in: /build/tmp.USK9zYbGAj/native

Welcome to Gradle 8.7!

Here are the highlights of this release:
 - Compiling and testing with Java 22
 - Cacheable Groovy script compilation
 - New methods in lazy collection properties

For more details see https://docs.gradle.org/8.7/release-notes.html

Received JVM installation metadata from '/nix/store/2vwkssqpzykk37r996cafq7x63imf4sp-openjdk-21+35/lib/openjdk': {JAVA_HOME=/nix/store/2vwkssqpzykk37r996cafq7x63imf4sp-openjdk-21+35/lib/open>
Checking if the launcher JVM can be re-used for build. To be re-used, the launcher JVM needs to match the parameters required for the build process: --add-opens=java.base/java.util=ALL-UNNAM>
To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/8.7/userguide/gradle_daemon.html#sec:disabling>
Starting process 'Gradle build daemon'. Working directory: /build/tmp.USK9zYbGAj/daemon/8.7 Command: /nix/store/2vwkssqpzykk37r996cafq7x63imf4sp-openjdk-21+35/lib/openjdk/bin/java --add-open>
Successfully started process 'Gradle build daemon'
An attempt to start the daemon took 0.505 secs.
The client will now receive all logging from the daemon (pid: 66). The daemon log file: /build/tmp.USK9zYbGAj/daemon/8.7/daemon-66.out.log
Closing daemon's stdin at end of input.
The daemon will no longer process any standard input.
Daemon will be stopped at the end of the build 
Using 16 worker leases.
Received JVM installation metadata from '/nix/store/2vwkssqpzykk37r996cafq7x63imf4sp-openjdk-21+35/lib/openjdk': {JAVA_HOME=/nix/store/2vwkssqpzykk37r996cafq7x63imf4sp-openjdk-21+35/lib/open>
Watching the file system is configured to be disabled
File system watching is inactive
Caching disabled for Groovy DSL script compilation (cp_init) because:
  Build cache is disabled
Compiling initialization script '/nix/store/b91yhihd33ripfhcblgf24v1rb3jnck8-init.gradle' using SubsetScriptTransformer.
Caching disabled for Groovy DSL script compilation (init) because:
  Build cache is disabled
Compiling initialization script '/nix/store/b91yhihd33ripfhcblgf24v1rb3jnck8-init.gradle' using BuildScriptTransformer.
Starting Build
Caching disabled for Groovy DSL script compilation (cp_settings) because:
  Build cache is disabled
Compiling settings file '/build/source/settings.gradle' using SubsetScriptTransformer.

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all artifacts for configuration 'classpath'.
> Could not find com.gradle:gradle-enterprise-gradle-plugin:3.16.2.
  Required by:
      unspecified:unspecified:unspecified

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

BUILD FAILED in 2s

The error is pretty straightforward: It couldn't find com.gradle:gradle-enterprise-gradle-plugin:3.16.2. I tried finding this in the generated gradle.lock file and it wasn't there. So the executable couldn't find all the deps, perhaps?

Maven BOMs are ignored

Maven supports BOM dependencies.
These are specified as:

      <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-bom</artifactId>
        <version>${micrometer.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

For some reason, Gradle2nix doesn't seem to resolve them, resulting in a missing dependency on nix-build.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.