54 Commits

Author SHA1 Message Date
Tad Fisher
5d1510184a Update for Gradle 8.13 2025-04-02 14:30:37 -07:00
Tad Fisher
2ca058c5b7 Filter projects from resolveProjectArtifacts dependencies 2025-01-31 18:03:26 -08:00
Tad Fisher
effc6f3c8b Bump gradle to nixos-unstable (8.12) 2025-01-22 14:07:02 -08:00
Tad Fisher
854024b721 Remove unused check 2025-01-22 12:58:57 -08:00
Tad Fisher
96a444c22b Support downloading additional artifacts (sources, javadoc, etc.) 2025-01-17 12:37:47 -08:00
Tad Fisher
f8c0afcd29 buildMavenRepo: handle relative artifact paths 2024-12-18 18:45:06 -08:00
Tad Fisher
7303a3b097 Version updates 2024-12-13 12:03:51 -08:00
Tad Fisher
dff8e5bc4c Unwrap gradle package 2024-12-13 12:03:51 -08:00
Tad Fisher
b33693bc6b Bump Gradle to 8.8 2024-07-16 10:43:56 -07:00
Tad Fisher
0160c945b8 Use lib.makeScope for consistent package resolution 2024-07-16 10:43:56 -07:00
Tad Fisher
6e37e6e3f9 Merge pull request #73 from milahu/patch-1
fix links to overrides section
2024-07-16 10:22:45 -07:00
milahu
b53cfa6d8e fix links to overrides section 2024-07-09 21:49:51 +02:00
Tad Fisher
03c1b713ad buildMavenRepo: Fix override fn 2024-06-13 17:44:27 -07:00
Tad Fisher
00e9cd4cc8 README.org: Fix example syntax 2024-06-13 15:44:37 -07:00
Tad Fisher
9c9ef07341 README.org: Fix formatting 2024-06-13 15:42:12 -07:00
Tad Fisher
b32bf21a6c Move Gradle build logic to a setup hook 2024-06-13 15:21:58 -07:00
Tad Fisher
a4ef499401 Provide separate buildMavenRepo builder 2024-06-07 11:44:01 -07:00
Tad Fisher
49fb4caab3 Use lenient configuration in ResolveProjectArtifacts 2024-06-07 10:34:56 -07:00
Tad Fisher
95c758b11c Don't run tasks in buildSrc project 2024-06-04 13:23:09 -07:00
Tad Fisher
85cebdd557 Separate plugins for different Gradle APIs 2024-06-04 13:15:20 -07:00
Tad Fisher
a935331795 Use older version of BuildServiceRegistry.registerIfAbsent 2024-05-30 17:16:57 -07:00
Tad Fisher
69574d8eeb Lower JDK compatibility to JDK 8 2024-05-30 11:14:27 -07:00
Tad Fisher
44f193c8f9 buildGradlePackage: always set GRADLE_USER_HOME 2024-05-30 11:04:56 -07:00
Tad Fisher
0851f93613 Relicense under Apache 2.0 2024-05-29 18:24:28 -07:00
Tad Fisher
a7be916e97 Remove unused test files 2024-05-29 18:16:15 -07:00
Tad Fisher
301c64fa2f Miscellaneous cleanup 2024-05-29 17:51:45 -07:00
Tad Fisher
d13b7b0d6d Apply offline repo on-demand 2024-05-29 12:38:24 -07:00
Tad Fisher
bdce8389fb Rename buildGradle to buildGradlePackage 2024-05-24 16:10:19 -07:00
Tad Fisher
f82c91be9f Allow overriding the Gradle installation 2024-05-24 16:10:01 -07:00
Tad Fisher
799fb3debc Allow overriding dependencies in gradle.nix 2024-05-24 14:24:41 -07:00
Tad Fisher
4910251482 Vastly simplify artifact extraction 2024-05-23 17:26:53 -07:00
Tad Fisher
43c4b71928 Update CLI interface 2024-05-19 13:56:09 -07:00
Tad Fisher
f24e295fc0 Dogfood v2 2024-05-17 17:50:06 -07:00
Tad Fisher
8d2ec45ad4 Rewrite plugin, use filenames in lockfile 2024-05-17 14:52:02 -07:00
Tad Fisher
e83e42f9d4 Fix ivy descriptor and snapshot artifacts 2023-12-19 17:40:34 -08:00
Tad Fisher
8ceeeb9611 WIP 2023-12-19 13:52:14 -08:00
Tad Fisher
6da87262a4 Redesign env hierarchy 2023-10-15 19:39:40 -07:00
Tad Fisher
121e512a06 Update metadata parsing 2023-10-11 17:51:59 -07:00
Tad Fisher
ba088f5bc6 Add --gradle-jdk argument 2023-10-10 10:52:04 -07:00
Tad Fisher
f618923fd0 Fix golden data for projects using local M2 dir 2023-10-06 16:48:24 -07:00
Tad Fisher
689a6a2090 Skip project dependencies 2023-10-06 16:23:59 -07:00
Tad Fisher
b152ca50f2 Cleanup build 2023-10-06 16:19:32 -07:00
Tad Fisher
00f8deb8f2 Rewrite based on code from the GitHub Dependency Graph Gradle Plugin 2023-10-06 16:01:15 -07:00
Tad Fisher
68327d0c5d Merge pull request #54 from portothree/master
fix(flake): replace `defaultApp` with `apps.default`
2023-09-30 12:19:09 -07:00
Gustavo Porto
acd8fb9328 fix: update jackson-parent sha256 2022-08-08 19:57:06 +01:00
Gustavo Porto
d3c140dea6 fix: update jackson-parent sha256 2022-08-08 19:52:56 +01:00
Gustavo Porto
6b20125670 fix: replace defaultApp with apps.default 2022-08-08 19:48:49 +01:00
Tad Fisher
fafe5b7e0b Merge pull request #35 from tadfisher/s3
Support repositories hosted in AWS S3
2021-03-10 17:05:09 -08:00
Tad Fisher
7f7d6a888b gradle-env.nix: Support fetchers per URL scheme 2021-02-03 17:19:04 -08:00
Tad Fisher
56c4bb435d gradle-env.nix: Use dependencyResolutionManagement in 6.8+ 2021-02-03 16:05:02 -08:00
Tad Fisher
9c705b5f1b plugin: Support repositories in dependencyResolutionManagement block 2021-02-03 10:24:18 -08:00
Tad Fisher
80b8a7d52e plugin: Support S3 repositories 2021-02-02 16:44:23 -08:00
Tad Fisher
55b3b60535 Update build dependencies 2021-02-01 14:58:38 -08:00
Tad Fisher
13958d35bf Merge pull request #31 from tadfisher/flake
flake: init
2021-01-04 20:38:11 -08:00
222 changed files with 8743 additions and 9546 deletions

20
.editorconfig Normal file
View File

@@ -0,0 +1,20 @@
[*.{kt,kts}]
end_of_line = lf
ij_kotlin_allow_trailing_comma = true
ij_kotlin_allow_trailing_comma_on_call_site = true
ij_kotlin_imports_layout = *,java.**,javax.**,kotlin.**,^
ij_kotlin_line_break_after_multiline_when_entry = true
ij_kotlin_packages_to_use_import_on_demand = unset
indent_size = 4
indent_style = space
insert_final_newline = true
ktlint_argument_list_wrapping_ignore_when_parameter_count_greater_or_equal_than = unset
ktlint_chain_method_rule_force_multiline_when_chain_operator_count_greater_or_equal_than = unset
ktlint_class_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 1
ktlint_code_style = ktlint_official
ktlint_function_naming_ignore_when_annotated_with = [unset]
ktlint_function_signature_body_expression_wrapping = multiline
ktlint_function_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 2
ktlint_ignore_back_ticked_identifier = false
ktlint_standard_filename = disabled
max_line_length = 140

23
COPYING
View File

@@ -1,20 +1,7 @@
Copyright © Tad Fisher and the gradle2nix contributors
Copyright © Tad Fisher and the gradle2nix contributors, and licensed
under the Apache License 2.0.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
Based on substantial portions of the GitHub Dependency Graph Gradle Plugin,
Copyright © Gradle, Inc and licensed under the Apache License 2.0.
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
See LICENSE for the full text of the Apache License 2.0.

177
LICENSE Normal file
View File

@@ -0,0 +1,177 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS

View File

@@ -2,7 +2,25 @@
[[./assets/gradle2nix.png]]
Generate [[https://nixos.org/nix/][Nix]] expressions which build [[https://gradle.org/][Gradle]]-based projects.
Generate [[https://nixos.org/nix/][Nix]] expressions which build
[[https://gradle.org/][Gradle]]-based projects.
** Table of contents
#+BEGIN_QUOTE
- [[#why][Why?]]
- [[#installation][Installation]]
- [[#flake][Flake]]
- [[#usage][Usage]]
- [[#for-packagers][For packagers]]
- [[#specifying-the-gradle-installation][Specifying the Gradle installation]]
- [[#reference][Reference]]
- [[#buildgradlepackage][buildGradlePackage]]
- [[#buildmavenrepo][buildMavenRepo]]
- [[#gradlesetuphook][gradleSetupHook]]
- [[#contributing][Contributing]]
- [[#license][License]]
#+END_QUOTE
** Why?
@@ -12,7 +30,8 @@ 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 [[https://reproducible-builds.org/][reproducibility]]. If you
One benefit of a functional build system is
[[https://reproducible-builds.org/][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
@@ -29,38 +48,40 @@ inputs, including:
- 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.
=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;
- Create isolated and reproducible development environments that
work anywhere Nix itself can run.
- Reduce or eliminate flakiness and maintenance headaches from CI/CD
pipelines
pipelines.
- Distribute a recipe which can reliably build a Gradle project in
repositories such as the [[https://nixos.org/nixpkgs/][Nix Package Collection]].
repositories such as the [[https://nixos.org/nixpkgs/][Nix Package
Collection]].
** Installation
A [[./default.nix][Nix expression]] (generated by =gradle2nix= itself) is provided for
convenience. The following expression will fetch and build the latest
version of this package:
A [[./gradle.nix][Nix expression]] (generated by =gradle2nix=
itself) is provided for convenience. The following expression will
fetch and build the latest version of this package:
#+begin_src nix
import (fetchTarball "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz") {}
#+end_src
If this expression is in, say, =gradle2nix.nix=, =gradle2nix= can be
built and placed in =.//result= with the following:
built and placed in =./result= with the following:
#+begin_example
nix build -f gradle2nix.nix
@@ -80,87 +101,327 @@ nix-env -if "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz"
=gradle2nix= is not yet packaged in =nixpkgs= itself, but work is
[[https://github.com/NixOS/nixpkgs/pull/77422][in progress]].
*** Flake (experimental)
The [[./nix/build-gradle-package.nix][buildGradlePackage]] function
is provided via the =gradle2nix.passthru.buildGradlePackage=
attribute.
A [[./flake.nix][flake.nix]] is provided for those using [[https://nixos.wiki/wiki/Flakes][Nix flakes]]. For example, the
following will build and run =gradle2nix= with the arguments provided
after =--=:
#+begin_src nix
{ pkgs ? import <nixpkgs> {} }:
let
gradle2nix = import (fetchTarball "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz") {}
in
gradle2nix.buildGradlePackage {
pname = "my-package";
version = "1.0";
lockFile = ./gradle.lock;
gradleInstallFlags = [ "installDist" ];
# ...
}
#+end_src
*** Flake
A [[./flake.nix][flake.nix]] is provided for those using
[[https://nixos.wiki/wiki/Flakes][Nix flakes]]. For example, the
following will build and run =gradle2nix= with the arguments
provided after =--=:
#+begin_example
nix run github:tadfisher/gradle2nix -- --help
#+end_example
The [[./nix/build-gradle-package.nix][buildGradlePackage]] function
is provided via the =builders= output.
#+begin_src nix
{
inputs.gradle2nix.url = "github:tadfisher/gradle2nix";
outputs = { self, gradle2nix }: {
packages.x86_64-linux.default = gradle2nix.builders.x86_64-linux.buildGradlePackage {
pname = "my-package";
version = "1.0";
lockFile = ./gradle.lock;
gradleInstallFlags = [ "installDist" ];
# ...
};
};
}
#+end_src
** Usage
#+begin_example
Usage: gradle2nix [OPTIONS] [PROJECT-DIR]
Usage: gradle2nix [<options>] [<args>]...
Gradle installation:
Where to find Gradle. By default, use the project's wrapper.
--gradle-dist=<uri> Gradle distribution URI
--gradle-home=<dir> Gradle home path (e.g. `nix eval --raw nixpkgs#gradle.outPath`/lib/gradle)
--gradle-wrapper=<value> Gradle wrapper version
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
-t, --task=<task> Gradle tasks to run (default: [resolveAllArtifacts])
-a, --artifacts=<artifacts> Comma-separated list of artifacts to download (artifacts:
doxygen,javadoc,samples,sources,usermanual) (default: [])
-p, --project=<path> Path to the project root (default: Current directory)
-o, --out-dir=<dir> Path to write generated files (default: <project>)
-l, --lock-file=<filename> Name of the generated lock file (default: gradle.lock)
-j, --gradle-jdk=<dir> JDK home to use for launching Gradle (e.g. `nix eval --raw
nixpkgs#openjdk.home`)
--log=(debug|info|warn|error) Print messages with this priority or higher (default: info)
--dump-events Dump Gradle event logs to the output directory
--stacktrace Print a stack trace on error
-h, --help Show this message and exit
Arguments:
PROJECT-DIR Path to the project root (default: .)
<args> Extra arguments to pass to Gradle
#+end_example
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][default.nix]].
Simply running =gradle2nix= in the root directory of a project
should be enough for most projects. This will produce a lock file,
by default called =gradle.lock=, which contains the pinned
dependencies for the project. An example of a build expression using
this lock file can be found in this project's
[[./default.nix][default.nix]].
*** Specifying the Gradle version
*** For packagers
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.
If you're creating a Nix package for an existing Gradle project, you
can reduce the number of pinned dependencies by passing one or more
=--task= arguments. This will only pin the dependencies that were
resolved as part of the build, instead of the default behavior where
all possible dependencies are pinned.
For example, if the package produces its build output via the
=:app:installDist= task, use the following:
#+begin_example
gradle2nix -g 6.1
gradle2nix -t :app:installDist
#+end_example
*** Multi-project builds
/Note:/ This may be *required* if the build resolves configurations
at execution time.
If you want to resolve only a subset of projects in a [[https://docs.gradle.org/current/userguide/intro_multi_project_builds.html][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=:
*** Specifying the Gradle installation
By default, if the project has configured the Gradle wrapper, it will
be used; otherwise, the version of Gradle used to build gradle2nix
will be used. You can override this to use any of the following:
#+begin_example
gradle2nix -p :app -p :widget
# Gradle distribution URL:
gradle2nix --gradle-dist='https://services.gradle.org/distributions/gradle-8.7-bin.zip'
# Path to a local Gradle installation:
gradle2nix --gradle-home=`nix eval nixpkgs#gradle.outPath`/lib/gradle
# A specific wrapper version:
gradle2nix --gradle-wrapper=8.7
#+end_example
Any [[https://docs.gradle.org/current/userguide/declaring_dependencies.html#sub:project_dependencies][project dependencies]] will be also be included when pinning
dependency artifacts.
** Reference
*** =buildGradlePackage=
This function is a convenience wrapper around =stdenv.mkDerivation=
that simplifies building Gradle projects with the lock files
produced by =gradle2nix=. It performs the following:
1. Applies [[#gradlesetuphook][gradleSetupHook]], overriding the
required =gradle= package if specified.
2. Builds the offline Maven repository with
[[#buildmavenrepo][buildMavenRepo]].
3. Sets the JDK used to run Gradle if specified.
4. Applies the offline repo to the Gradle build using an
initialization script.
- Source:
[[./nix/build-gradle-package.nix][build-gradle-package.nix]]
- Location:
- Nix :: =gradle2nix.passthru.buildGradlePackage=
- Flake :: =builders.${system}.buildGradlePackage=
**** Arguments to =buildGradlePackage=
- =lockFile= :: Path to the lock file generated by =gradle2nix=
(e.g. =gradle.lock=).
- =gradle= :: The Gradle package to use. Default is
=pkgs.gradle=.
- =buildJdk= :: Override the default JDK used to run Gradle itself.
- =fetchers= :: Override functions which fetch dependency
artifacts.
See [[#fetchers][detailed documentation]] below.
- =overrides= :: Override artifacts in the offline Maven repository.
See [[#overrides][detailed documentation]] below.
In addition, this function accepts:
- All arguments to =stdenv.mkDerivation=.
- Arguments specific to =gradleSetupHook= (see
[[#gradlesetuphook][below]]).
*** =buildMavenRepo=
This function takes a lock file and produces a derivation which
downloads all dependencies into a Maven local repository. The
derivation provides a passthru =gradleInitScript= attribute, which
is a Gradle initialization script that can be applied using =gradle
--init-script== or placed in =$GRADLE_USER_HOME/init.d=. The init
script replaces all repositories referenced in the project with the
local repository.
- Source: [[./nix/build-maven-repo.nix][build-maven-repo.nix]]
- Location:
- Nix :: =gradle2nix.passthru.buildMavenRepo=
- Flake :: =builders.${system}.buildMavenRepo=
**** Arguments to =buildMavenRepo=
- =lockFile= :: Path to the lock file generated by gradle2nix (e.g.
=gradle.lock=).
- =fetchers= :: Override functions which fetch dependency
artifacts.
See [[#fetchers][detailed documentation]] below.
- =overrides= :: Override artifacts in the offline Maven repository.
See [[#overrides][detailed documentation]] below.
*** =gradleSetupHook=
A
[[https://nixos.org/manual/nixpkgs/unstable/#ssec-setup-hooks][setup
hook]] to simplify building Gradle packages. Overrides the default
configure, build, check, and install phases.
To use, add =gradleSetupHook= to a derivation's =nativeBuildInputs=.
- Source: [[./nix/setup-hook.sh][setup-hook.sh]]
- Location:
- Nix :: =gradle2nix.passthru.gradleSetupHook=
- Flake :: =packages.${system}.gradleSetupHook=
**** Variables controlling =gradleSetupHook=
- =gradleInitScript= :: Path to an
[[https://docs.gradle.org/current/userguide/init_scripts.html][initialization
script]] used by =gradle= during all phases.
- =gradleFlags= :: Controls the arguments passed to =gradle= during
all phases.
- =gradleBuildFlags= :: Controls the arguments passed to =gradle=
during the build phase. The build phase is skipped if this is
unset.
- =gradleCheckFlags= :: Controls the arguments passed to =gradle=
during the check phase. The check phase is skipped if this is
unset.
- =gradleInstallFlags= :: Controls the arguments passed to =gradle=
during the install phase. This install phase is skipped if this is
unset.
- =dontUseGradleConfigure= :: When set to true, don't use the
predefined =gradleConfigurePhase=. This will also disable the use
of =gradleInitScript=.
- =dontUseGradleCheck= :: When set to true, don't use the predefined
=gradleCheckPhase=.
- =dontUseGradleInstall= :: When set to true, don't use the
predefined =gradleInstallPhase=.
**** Honored variables
The following variables commonly used by =stdenv.mkDerivation= are
honored by =gradleSetupHook=.
- =enableParallelBuilding=
- =enableParallelChecking=
- =enableParallelInstalling=
*** Common arguments
**** =fetchers=
Names in this set are URL schemes such as "https" or "s3". Values
are functions which take an artifact in the form ={ url, hash }=
and fetches it into the Nix store. For example:
#+begin_src nix
{
s3 = { name, url, hash }: fetchs3 {
s3url = url;
# TODO This doesn't work without patching fetchs3 to accept SRI hashes
inherit name hash;
region = "us-west-2";
credentials = {
access_key_id = "foo";
secret_access_key = "bar";
};
};
}
#+end_src
**** =overrides=
This is an attrset of the form:
#+begin_src nix
{
"${group}:${module}:${version}" = {
"${filename}" = <override function>;
}
}
#+end_src
The override function takes the original derivation from 'fetchers'
(e.g. the result of 'fetchurl') and produces a new derivation to
replace it.
- Replace a dependency's JAR artifact:
#+begin_src nix
{
"com.squareup.okio:okio:3.9.0"."okio-3.9.0.jar" = _: fetchurl {
url = "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.0/okio-3.9.0.jar";
hash = "...";
downloadToTemp = true;
postFetch = "install -Dt $out/com/squareup/okio/okio/3.9.0/ $downloadedFile"
};
}
#+end_src
- Patch a JAR containing native binaries:
#+begin_src nix
{
"com.android.tools.build:aapt2:8.5.0-rc02-11315950" = {
"aapt2-8.5.0-rc02-11315950-linux.jar" = src: runCommandCC src.name {
nativeBuildInputs = [ jdk autoPatchelfHook ];
dontAutoPatchelf = true;
} ''
cp ${src} aapt2.jar
jar xf aapt2.jar aapt2
chmod +x aapt2
autoPatchelf aapt2
jar uf aapt2.jar aapt2
cp aapt2.jar $out
'';
};
}
#+end_src
** Contributing
Bug reports and feature requests are encouraged.
[[https://github.com/tadfisher/gradle2nix/issues/new][Create an issue]]
[[https://github.com/tadfisher/gradle2nix/issues/new][Create an
issue]]
Code contributions are also encouraged. Please review the test cases
in the [[./fixtures][fixtures]] directory and create a new one to reproduce any fixes
or test new features. See the [[./plugin/src/compatTest/kotlin/org/nixos/gradle2nix][existing compatibility tests]] for
examples of testing with these fixtures.
in the [[./fixtures][fixtures]] directory and create a new one to
reproduce any fixes or test new features. See the
[[./app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt][existing
tests]] for examples of testing with these fixtures.
** License
=gradle2nix= is licensed under the [[./COPYING][MIT License]].
=gradle2nix= is licensed under the [[./COPYING][Apache License 2.0]].

View File

@@ -1,39 +1,58 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
kotlin("jvm")
kotlin("kapt")
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.kotlin.plugin.serialization")
application
idea
}
configurations.register("share")
dependencies {
implementation(project(":model"))
implementation(kotlin("stdlib-jdk8"))
implementation(kotlin("reflect"))
implementation("org.gradle:gradle-tooling-api:${gradle.gradleVersion}")
implementation("com.github.ajalt:clikt:latest.release")
implementation("org.slf4j:slf4j-api:latest.release")
runtimeOnly("org.slf4j:slf4j-simple:latest.release")
implementation("com.squareup.moshi:moshi-adapters:latest.release")
implementation("com.squareup.moshi:moshi-kotlin:latest.release")
kapt("com.squareup.moshi:moshi-kotlin-codegen:latest.release")
implementation("com.squareup.okio:okio:latest.release")
implementation(libs.clikt)
implementation(libs.gradle.toolingApi)
implementation(libs.kotlin.stdlib)
implementation(libs.kotlinx.coroutines.core)
implementation(libs.serialization.json)
runtimeOnly(libs.slf4j.simple)
testRuntimeOnly(kotlin("reflect"))
testImplementation("org.spekframework.spek2:spek-dsl-jvm:latest.release")
testRuntimeOnly("org.spekframework.spek2:spek-runner-junit5:latest.release")
testImplementation("io.strikt:strikt-core:latest.release")
"share"(project(":plugin:base", configuration = "shadow"))
"share"(project(":plugin:gradle80", configuration = "shadow"))
"share"(project(":plugin:gradle81", configuration = "shadow"))
testImplementation(libs.kotest.assertions)
testImplementation(libs.kotest.runner)
testImplementation(libs.ktor.server.core)
testImplementation(libs.ktor.server.netty)
}
application {
mainClass.set("org.nixos.gradle2nix.MainKt")
applicationName = "gradle2nix"
applicationDefaultJvmArgs += "-Dorg.nixos.gradle2nix.share=@APP_HOME@/share"
applicationDefaultJvmArgs =
listOf(
"-Dorg.nixos.gradle2nix.share=@APP_HOME@/share",
"-Dslf4j.internal.verbosity=ERROR",
)
applicationDistribution
.from(tasks.getByPath(":plugin:shadowJar"))
.from(configurations.named("share"))
.into("share")
.rename("plugin.*\\.jar", "plugin.jar")
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_1_8)
optIn.add("kotlin.RequiresOptIn")
freeCompilerArgs.addAll(
"-Xconsistent-data-class-copy-visibility"
)
}
}
sourceSets {
@@ -44,43 +63,41 @@ sourceSets {
}
}
val updateGolden = providers.gradleProperty("update-golden")
tasks {
(run) {
dependsOn(installDist)
doFirst {
systemProperties("org.nixos.gradle2nix.share" to installDist.get().destinationDir.resolve("share"))
}
enabled = false
}
startScripts {
doLast {
unixScript.writeText(unixScript.readText().replace("@APP_HOME@", "\$APP_HOME"))
windowsScript.writeText(windowsScript.readText().replace("@APP_HOME@", "%APP_HOME%"))
unixScript.writeText(
unixScript.readText().replace("@APP_HOME@", "'\$APP_HOME'"),
)
windowsScript.writeText(
windowsScript.readText().replace("@APP_HOME@", "%APP_HOME%"),
)
}
}
// TODO Find out why this fails the configuration cache
test {
notCompatibleWithConfigurationCache("contains a Task reference")
dependsOn(installDist)
val shareDir = layout.dir(installDist.map { it.destinationDir.resolve("share") })
doFirst {
systemProperties("org.nixos.gradle2nix.share" to installDist.get().destinationDir.resolve("share"))
if (updateGolden.isPresent) {
systemProperty("org.nixos.gradle2nix.update-golden", "")
}
useJUnitPlatform {
includeEngines("spek2")
systemProperties(
"org.nixos.gradle2nix.share" to shareDir.get().asFile,
"org.nixos.gradle2nix.m2" to "http://0.0.0.0:8989/m2",
)
}
useJUnitPlatform()
testLogging {
events("passed", "skipped", "failed")
}
}
withType<KotlinCompile> {
kotlinOptions {
jvmTarget = "1.8"
}
}
idea {
module {
}
}
}

View File

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

View File

@@ -1,331 +0,0 @@
# This file is generated by gradle2nix.
#
# Example usage (e.g. in default.nix):
#
# with (import <nixpkgs> {});
# let
# buildGradle = callPackage ./gradle-env.nix {};
# in
# buildGradle {
# envSpec = ./gradle-env.json;
#
# src = ./.;
#
# gradleFlags = [ "installDist" ];
#
# installPhase = ''
# mkdir -p $out
# cp -r app/build/install/myproject $out
# '';
# }
{ stdenv, buildEnv, fetchurl, gradleGen, writeText, writeTextDir }:
{
# Path to the environment spec generated by gradle2nix (e.g. gradle-env.json).
envSpec
, pname ? null
, version ? null
, enableParallelBuilding ? true
# Arguments to Gradle used to build the project in buildPhase.
, gradleFlags ? [ "build" ]
# Gradle package to use instead of the one generated by gradle2nix.
, gradlePackage ? null
# Enable debugging for the Gradle build; this will cause Gradle to run a debug server
# and wait for a JVM debugging client to attach.
, enableDebug ? false
# Additional code to run in the Gradle init script (init.gradle).
, extraInit ? ""
# Override the default JDK used to run Gradle itself.
, buildJdk ? null
, ... } @ args:
let
inherit (builtins)
attrValues concatStringsSep filter fromJSON match replaceStrings sort;
inherit (stdenv.lib)
assertMsg concatMapStringsSep groupBy' hasSuffix last mapAttrs
mapAttrsToList optionalString readFile removeSuffix unique versionAtLeast
versionOlder;
mkDep = depSpec: stdenv.mkDerivation {
inherit (depSpec) name;
src = fetchurl {
inherit (depSpec) urls sha256;
};
phases = "installPhase";
installPhase = ''
mkdir -p $out/${depSpec.path}
ln -s $src $out/${depSpec.path}/${depSpec.name}
'';
};
mkModuleMetadata = deps:
let
ids = filter
(id: id.type == "pom")
(map (dep: dep.id) deps);
modules = groupBy'
(meta: id:
let
isNewer = versionOlder meta.latest id.version;
isNewerRelease =
!(hasSuffix "-SNAPSHOT" id.version) &&
versionOlder meta.release id.version;
in {
groupId = id.group;
artifactId = id.name;
latest = if isNewer then id.version else meta.latest;
release = if isNewerRelease then id.version else meta.release;
versions = meta.versions ++ [id.version];
}
)
{
latest = "";
release = "";
versions = [];
}
(id: "${replaceStrings ["."] ["/"] id.group}/${id.name}/maven-metadata.xml")
ids;
in
attrValues (mapAttrs (path: meta:
let
versions' = sort versionOlder (unique meta.versions);
in
with meta; writeTextDir path ''
<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1">
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<versioning>
${optionalString (latest != "") "<latest>${latest}</latest>"}
${optionalString (release != "") "<release>${release}</release>"}
<versions>
${concatMapStringsSep "\n " (v: "<version>${v}</version>") versions'}
</versions>
</versioning>
</metadata>
''
) modules);
mkSnapshotMetadata = deps:
let
snapshotDeps = filter (dep: dep ? build && dep ? timestamp) deps;
modules = groupBy'
(meta: dep:
let
id = dep.id;
isNewer = dep.build > meta.buildNumber;
# Timestamp values can be bogus, e.g. jitpack.io
updated = if (match "[0-9]{8}\.[0-9]{6}" dep.timestamp) != null
then replaceStrings ["."] [""] dep.timestamp
else "";
in {
groupId = id.group;
artifactId = id.name;
version = id.version;
timestamp = if isNewer then dep.timestamp else meta.timestamp;
buildNumber = if isNewer then dep.build else meta.buildNumber;
lastUpdated = if isNewer then updated else meta.lastUpdated;
versions = meta.versions or [] ++ [{
classifier = id.classifier or "";
extension = id.extension;
value = "${removeSuffix "-SNAPSHOT" id.version}-${dep.timestamp}-${toString dep.build}";
updated = updated;
}];
}
)
{
timestamp = "";
buildNumber = -1;
lastUpdated = "";
}
(dep: "${replaceStrings ["."] ["/"] dep.id.group}/${dep.id.name}/${dep.id.version}/maven-metadata.xml")
snapshotDeps;
mkSnapshotVersion = version: ''
<snapshotVersion>
${optionalString (version.classifier != "") "<classifier>${version.classifier}</classifier>"}
<extension>${version.extension}</extension>
<value>${version.value}</value>
${optionalString (version.updated != "") "<updated>${version.updated}</updated>"}
</snapshotVersion>
'';
in
attrValues (mapAttrs (path: meta:
with meta; writeTextDir path ''
<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1">
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<versioning>
<snapshot>
${optionalString (timestamp != "") "<timestamp>${timestamp}</timestamp>"}
${optionalString (buildNumber != -1) "<buildNumber>${toString buildNumber}</buildNumber>"}
</snapshot>
${optionalString (lastUpdated != "") "<lastUpdated>${lastUpdated}</lastUpdated>"}
<snapshotVersions>
${concatMapStringsSep "\n " mkSnapshotVersion versions}
</snapshotVersions>
</versioning>
</metadata>
''
) modules);
mkRepo = project: type: deps: buildEnv {
name = "${project}-gradle-${type}-env";
paths = map mkDep deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps;
};
mkInitScript = projectSpec: gradle:
let
repos = mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies;
hasDependencies = mapAttrs (type: deps: deps != []) projectSpec.dependencies;
in
assert (assertMsg (hasDependencies.settings -> versionAtLeast gradle.version "6.0") ''
Project `${projectSpec.name}' has settings script dependencies, such as settings
plugins, which are not supported by gradle2nix for Gradle versions prior to 6.0.
Potential remedies:
- Pass `--gradle-version=<version>' to the gradle2nix command.
- Patch the `settings.gradle[.kts]' file to remove script dependencies.
'');
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()
}
}
}
${optionalString (hasDependencies.settings && (versionAtLeast gradle.version "6.0")) ''
gradle.beforeSettings {
offlineRepo(it.buildscript.repositories, "settings", "${repos.settings}")
}
''}
${optionalString (hasDependencies.plugin) ''
gradle.settingsEvaluated {
offlineRepo(it.pluginManagement.repositories, "plugin", "${repos.plugin}")
}
''}
${optionalString (hasDependencies.buildscript) ''
gradle.projectsLoaded {
allprojects {
buildscript {
offlineRepo(repositories, "buildscript", "${repos.buildscript}")
}
}
}
''}
${optionalString (hasDependencies.project) ''
gradle.projectsLoaded {
allprojects {
offlineRepo(repositories, "project", "${repos.project}")
}
}
''}
${extraInit}
'';
mkGradle = gradleSpec:
gradleGen.gradleGen {
inherit (gradleSpec) nativeVersion;
name = "gradle-${gradleSpec.version}-${gradleSpec.type}";
src = fetchurl {
inherit (gradleSpec) url sha256;
};
} // {
inherit (gradleSpec) version;
};
mkProjectEnv = projectSpec: rec {
inherit (projectSpec) name path version;
gradle = args.gradlePackage or mkGradle projectSpec.gradle;
initScript = mkInitScript projectSpec gradle;
};
gradleEnv = mapAttrs
(_: p: mkProjectEnv p)
(fromJSON (readFile envSpec));
projectEnv = gradleEnv."";
pname = args.pname or projectEnv.name;
version = args.version or projectEnv.version;
buildProject = env: flags: ''
gradle --offline --no-daemon --no-build-cache \
--info --full-stacktrace --warning-mode=all \
${optionalString enableParallelBuilding "--parallel"} \
${optionalString enableDebug "-Dorg.gradle.debug=true"} \
${optionalString (buildJdk != null) "-Dorg.gradle.java.home=${buildJdk.home}"} \
--init-script ${env.initScript} \
${optionalString (env.path != "") ''-p "${env.path}"''} \
${concatStringsSep " " flags}
'';
buildIncludedProjects =
concatStringsSep "\n" (mapAttrsToList
(_: env: buildProject env [ "build" ])
(removeAttrs gradleEnv [ "" ]));
buildRootProject = buildProject projectEnv gradleFlags;
in stdenv.mkDerivation (args // {
inherit pname version;
nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ projectEnv.gradle ];
buildPhase = args.buildPhase or ''
runHook preBuild
(
set -eux
# use the init script here
TMPHOME=$(mktemp -d)
mkdir -p $TMPHOME/init.d
cp ${projectEnv.initScript} $TMPHOME/init.d
export "GRADLE_USER_HOME=$TMPHOME"
${buildIncludedProjects}
${buildRootProject}
)
runHook postBuild
'';
dontStrip = true;
})

View File

@@ -1,6 +1,16 @@
import org.gradle.util.GradleVersion
initscript {
dependencies {
classpath files("plugin.jar")
if (GradleVersion.current() >= GradleVersion.version("8.1")) {
classpath files("plugin-gradle81.jar")
} else if (GradleVersion.current() >= GradleVersion.version("8.0")) {
classpath files("plugin-gradle80.jar")
} else if (GradleVersion.current() >= GradleVersion.version("7.5")) {
classpath files("plugin-gradle75.jar")
} else {
classpath files("plugin-base.jar")
}
}
}

View File

@@ -1,50 +1,11 @@
package org.nixos.gradle2nix
import com.squareup.moshi.JsonClass
import kotlinx.serialization.Serializable
@JsonClass(generateAdapter = true)
data class NixGradleEnv(
val name: String,
val version: String,
val path: String,
val gradle: DefaultGradle,
val dependencies: Map<String, List<DefaultArtifact>>
typealias Env = Map<String, Map<String, Artifact>>
@Serializable
data class Artifact internal constructor(
val url: String,
val hash: String,
)
fun buildEnv(builds: Map<String, DefaultBuild>): Map<String, NixGradleEnv> =
builds.mapValues { (path, build) ->
NixGradleEnv(
name = build.rootProject.name,
version = build.rootProject.version,
path = path,
gradle = build.gradle,
dependencies = mapOf(
"settings" to build.settingsDependencies,
"plugin" to build.pluginDependencies,
"buildscript" to build.rootProject.collectDependencies(DefaultProject::buildscriptDependencies),
"project" to build.rootProject.collectDependencies(DefaultProject::projectDependencies)
)
)
}
private fun DefaultProject.collectDependencies(
chooser: DefaultProject.() -> List<DefaultArtifact>
): List<DefaultArtifact> {
val result = mutableMapOf<ArtifactIdentifier, DefaultArtifact>()
mergeRepo(result, chooser())
for (child in children) {
mergeRepo(result, child.collectDependencies(chooser))
}
return result.values.toList()
}
private fun mergeRepo(
base: MutableMap<ArtifactIdentifier, DefaultArtifact>,
extra: List<DefaultArtifact>
) {
extra.forEach { artifact ->
base.merge(artifact.id, artifact) { old, new ->
old.copy(urls = old.urls.union(new.urls).toList())
}
}
}

View File

@@ -1,31 +1,113 @@
package org.nixos.gradle2nix
import kotlinx.coroutines.suspendCancellableCoroutine
import org.gradle.tooling.GradleConnectionException
import org.gradle.tooling.GradleConnector
import org.gradle.tooling.ProjectConnection
import org.gradle.tooling.ResultHandler
import org.gradle.tooling.model.gradle.GradleBuild
import org.nixos.gradle2nix.model.ARTIFACTS_PROPERTY
import org.nixos.gradle2nix.model.DependencySet
import java.io.File
import kotlin.coroutines.resume
import kotlin.coroutines.resumeWithException
import kotlin.io.path.absolutePathString
fun connect(config: Config): ProjectConnection =
GradleConnector.newConnector()
fun connect(
config: Config,
projectDir: File = config.projectDir,
): ProjectConnection =
GradleConnector
.newConnector()
.apply {
if (config.gradleVersion != null) {
useGradleVersion(config.gradleVersion)
when (val source = config.gradleSource) {
is GradleSource.Distribution -> useDistribution(source.uri)
is GradleSource.Path -> useInstallation(source.path)
GradleSource.Project -> useBuildDistribution()
is GradleSource.Wrapper -> useGradleVersion(source.version)
}
}
.forProjectDirectory(config.projectDir)
}.forProjectDirectory(projectDir)
.connect()
@Suppress("UnstableApiUsage")
fun ProjectConnection.getBuildModel(config: Config, path: String): DefaultBuild {
return model(Build::class.java).apply {
addArguments(
"--init-script=$shareDir/init.gradle",
"-Porg.nixos.gradle2nix.configurations=${config.configurations.joinToString(",")}",
"-Porg.nixos.gradle2nix.subprojects=${config.subprojects.joinToString(",")}"
suspend fun ProjectConnection.buildModel(): GradleBuild =
suspendCancellableCoroutine { continuation ->
val cancellationTokenSource = GradleConnector.newCancellationTokenSource()
continuation.invokeOnCancellation { cancellationTokenSource.cancel() }
action { controller -> controller.buildModel }
.withCancellationToken(cancellationTokenSource.token())
.run(
object : ResultHandler<GradleBuild> {
override fun onComplete(result: GradleBuild) {
continuation.resume(result)
}
override fun onFailure(failure: GradleConnectionException) {
continuation.resumeWithException(failure)
}
},
)
if (config.gradleArgs != null) addArguments(config.gradleArgs)
if (path.isNotEmpty()) addArguments("--project-dir=$path")
if (!config.quiet) {
}
suspend fun ProjectConnection.build(
name: String,
config: Config,
tasks: List<String> = config.tasks,
): DependencySet =
suspendCancellableCoroutine { continuation ->
val cancellationTokenSource = GradleConnector.newCancellationTokenSource()
continuation.invokeOnCancellation { cancellationTokenSource.cancel() }
val systemProperties =
buildMap {
if (config.dumpEvents) {
put(
"org.gradle.internal.operations.trace",
config.outDir
.toPath()
.resolve(name)
.absolutePathString(),
)
}
if (config.artifacts.isNotEmpty()) {
put(
ARTIFACTS_PROPERTY,
config.artifacts.joinToString(",") { it.name.lowercase() },
)
}
}
action { controller -> controller.getModel(DependencySet::class.java) }
.withCancellationToken(cancellationTokenSource.token())
.forTasks(*tasks.toTypedArray())
.setJavaHome(config.gradleJdk)
.addArguments(config.gradleArgs)
.addArguments(
"--refresh-dependencies",
"--gradle-user-home=${config.gradleHome}",
"--init-script=${config.appHome}/init.gradle",
).apply {
if (config.logger.stacktrace) {
addArguments("--stacktrace")
}
if (config.logger.logLevel < LogLevel.ERROR) {
setStandardOutput(System.err)
setStandardError(System.err)
}
}.get().let { DefaultBuild(it) }
if (systemProperties.isNotEmpty()) {
withSystemProperties(systemProperties)
}
}.run(
object : ResultHandler<DependencySet> {
override fun onComplete(result: DependencySet) {
continuation.resume(result)
}
override fun onFailure(failure: GradleConnectionException) {
continuation.resumeWithException(failure)
}
},
)
}

View File

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

View File

@@ -1,171 +1,257 @@
package org.nixos.gradle2nix
import com.github.ajalt.clikt.completion.CompletionCandidates
import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.core.context
import com.github.ajalt.clikt.output.CliktHelpFormatter
import com.github.ajalt.clikt.parameters.arguments.ProcessedArgument
import com.github.ajalt.clikt.core.main
import com.github.ajalt.clikt.output.MordantHelpFormatter
import com.github.ajalt.clikt.parameters.arguments.argument
import com.github.ajalt.clikt.parameters.arguments.convert
import com.github.ajalt.clikt.parameters.arguments.default
import com.github.ajalt.clikt.parameters.arguments.multiple
import com.github.ajalt.clikt.parameters.groups.default
import com.github.ajalt.clikt.parameters.groups.mutuallyExclusiveOptions
import com.github.ajalt.clikt.parameters.groups.single
import com.github.ajalt.clikt.parameters.options.convert
import com.github.ajalt.clikt.parameters.options.default
import com.github.ajalt.clikt.parameters.options.defaultLazy
import com.github.ajalt.clikt.parameters.options.flag
import com.github.ajalt.clikt.parameters.options.multiple
import com.github.ajalt.clikt.parameters.options.option
import com.github.ajalt.clikt.parameters.options.validate
import com.github.ajalt.clikt.parameters.options.split
import com.github.ajalt.clikt.parameters.types.enum
import com.github.ajalt.clikt.parameters.types.file
import com.squareup.moshi.Moshi
import com.squareup.moshi.Types
import okio.buffer
import okio.sink
import kotlinx.coroutines.runBlocking
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.encodeToStream
import org.gradle.tooling.model.gradle.GradleBuild
import org.nixos.gradle2nix.model.ArtifactType
import org.nixos.gradle2nix.model.DependencySet
import org.nixos.gradle2nix.model.RESOLVE_ALL_TASK
import java.io.File
val shareDir: String = System.getProperty("org.nixos.gradle2nix.share")
import java.net.URI
data class Config(
val gradleVersion: String?,
val gradleArgs: String?,
val configurations: List<String>,
val appHome: File,
val gradleHome: File,
val gradleSource: GradleSource,
val gradleJdk: File?,
val gradleArgs: List<String>,
val outDir: File,
val projectDir: File,
val includes: List<File>,
val subprojects: List<String>,
val buildSrc: Boolean,
val quiet: Boolean
val tasks: List<String>,
val artifacts: List<ArtifactType>,
val logger: Logger,
val dumpEvents: Boolean,
)
@OptIn(ExperimentalSerializationApi::class)
val JsonFormat =
Json {
ignoreUnknownKeys = true
prettyPrint = true
prettyPrintIndent = " "
}
sealed interface GradleSource {
data class Distribution(
val uri: URI,
) : GradleSource
data class Path(
val path: File,
) : GradleSource
data object Project : GradleSource
data class Wrapper(
val version: String,
) : GradleSource
}
enum class LogLevel {
DEBUG,
INFO,
WARN,
ERROR,
}
class Gradle2Nix :
CliktCommand(
name = "gradle2nix",
) {
val allProjects = listOf(projectDir) + includes
private val tasks: List<String> by option(
"--task",
"-t",
metavar = "TASK",
help = "Gradle tasks to run",
).split(",").default(listOf(RESOLVE_ALL_TASK))
private val artifacts: List<ArtifactType> by option(
"--artifacts",
"-a",
metavar = "ARTIFACTS",
help = "Comma-separated list of artifacts to download",
helpTags = mapOf("artifacts" to "doxygen,javadoc,samples,sources,usermanual"),
).enum<ArtifactType>(key = { it.name.lowercase() }).split(",").default(emptyList())
private val projectDir: File by option(
"--project",
"-p",
help = "Path to the project root",
).file(
mustExist = true,
mustBeReadable = true,
canBeFile = false,
).convert { file ->
getProjectRoot(file) ?: fail("Could not locate project root in \"$file\" or its parents.")
}.defaultLazy("Current directory") {
File(".")
}
class Main : CliktCommand(
name = "gradle2nix"
) {
private val gradleVersion: String? by option("--gradle-version", "-g",
metavar = "VERSION",
help = "Use a specific Gradle version")
private val gradleArgs: String? by option("--gradle-args", "-a",
metavar = "ARGS",
help = "Extra arguments to pass to Gradle")
private val configurations: List<String> by option("--configuration", "-c",
metavar = "NAME",
help = "Add a configuration to resolve (default: all configurations)")
.multiple()
private val includes: List<File> by option("--include", "-i",
private val outDir: File? by option(
"--out-dir",
"-o",
metavar = "DIR",
help = "Add an additional project to include")
.file(mustExist = true, canBeFile = false, canBeDir = true, mustBeReadable = true)
.multiple()
.validate { files ->
val failures = files.filterNot { it.isProjectRoot() }
if (failures.isNotEmpty()) {
val message = failures.joinToString("\n ")
fail("Included builds are not Gradle projects:\n$message\n" +
"Gradle projects must contain a settings.gradle or settings.gradle.kts script.")
}
}
help = "Path to write generated files",
).file(canBeFile = false, canBeDir = true)
.defaultLazy("<project>") { projectDir }
private val subprojects: List<String> by option("--project", "-p",
metavar = "PATH",
help = "Only resolve these subproject paths, e.g. ':', or ':sub:project' (default: all projects)")
.multiple()
.validate { paths ->
val failures = paths.filterNot { it.startsWith(":") }
if (failures.isNotEmpty()) {
val message = failures.joinToString("\n ")
fail("Subproject paths must be absolute:\n$message\n" +
"Paths are in the form ':parent:child'.")
}
}
val outDir: File? by option("--out-dir", "-o",
metavar = "DIR",
help = "Path to write generated files (default: PROJECT-DIR)")
.file(canBeFile = false, canBeDir = true)
val envFile: String by option("--env", "-e",
internal val lockFile: String by option(
"--lock-file",
"-l",
metavar = "FILENAME",
help = "Prefix for environment files (.json and .nix)")
.default("gradle-env")
help = "Name of the generated lock file",
).default("gradle.lock")
private val buildSrc: Boolean by option("--build-src", "-b", help = "Include buildSrc project (default: true)")
.flag("--no-build-src", "-nb", default = true)
private val gradleSource: GradleSource by mutuallyExclusiveOptions(
option(
"--gradle-dist",
metavar = "URI",
help = "Gradle distribution URI",
).convert { GradleSource.Distribution(URI(it)) },
option(
"--gradle-home",
metavar = "DIR",
help = "Gradle home path (e.g. \\`nix eval --raw nixpkgs#gradle.outPath\\`/lib/gradle)",
).file(mustExist = true, canBeFile = false).convert { GradleSource.Path(it) },
option(
"--gradle-wrapper",
help = "Gradle wrapper version",
).convert { GradleSource.Wrapper(it) },
name = "Gradle installation",
help = "Where to find Gradle. By default, use the project's wrapper.",
).single().default(GradleSource.Project)
private val quiet: Boolean by option("--quiet", "-q", help = "Disable logging")
.flag(default = false)
private val gradleJdk: File? by option(
"--gradle-jdk",
"-j",
metavar = "DIR",
help = "JDK home to use for launching Gradle (e.g. \\`nix eval --raw nixpkgs#openjdk.home\\`)",
).file(canBeFile = false, canBeDir = true)
private val projectDir: File by argument("PROJECT-DIR", help = "Path to the project root (default: .)")
.projectDir()
.default(File("."))
private val logLevel: LogLevel by option(
"--log",
help = "Print messages with this priority or higher",
).enum<LogLevel>(key = { it.name.lowercase() })
.default(LogLevel.INFO, "info")
private val dumpEvents: Boolean by option(
"--dump-events",
help = "Dump Gradle event logs to the output directory",
).flag()
private val stacktrace: Boolean by option(
"--stacktrace",
help = "Print a stack trace on error",
).flag()
private val gradleArgs: List<String> by argument(
name = "ARGS",
help = "Extra arguments to pass to Gradle",
).multiple()
init {
context {
helpFormatter = CliktHelpFormatter(showDefaultValues = true)
helpFormatter = { MordantHelpFormatter(it, showDefaultValues = true) }
}
}
// Visible for testing
lateinit var config: Config
@OptIn(ExperimentalSerializationApi::class)
override fun run() {
config = Config(
gradleVersion,
val logger = Logger(logLevel = logLevel, stacktrace = stacktrace)
val appHome =
System.getProperty("org.nixos.gradle2nix.share")?.let(::File)
?: error("Could not locate the /share directory in the gradle2nix installation: ${System.getenv("APP_HOME")}")
logger.debug("appHome=$appHome")
val gradleHome =
System.getenv("GRADLE_USER_HOME")?.let(::File) ?: File("${System.getProperty("user.home")}/.gradle")
logger.debug("gradleHome=$gradleHome")
val config =
Config(
appHome,
gradleHome,
gradleSource,
gradleJdk,
gradleArgs,
configurations,
outDir ?: projectDir,
projectDir,
includes,
subprojects,
buildSrc,
quiet
tasks,
artifacts,
logger,
dumpEvents,
)
val (log, _, _) = Logger(verbose = !config.quiet)
val paths = resolveProjects(config).map { p ->
p.toRelativeString(config.projectDir)
val buildSrcs =
connect(config).use { connection ->
val root = runBlocking { connection.buildModel() }
val builds: List<GradleBuild> =
buildList {
add(root)
addAll(root.editableBuilds)
}
val models = connect(config).use { connection ->
paths.associateWith { project ->
log("Resolving project model: ${project.takeIf { it.isNotEmpty() } ?: "root project"}...")
connection.getBuildModel(config, project)
builds.mapNotNull { build ->
build.rootProject.projectDirectory
.resolve("buildSrc")
.takeIf { it.exists() }
}
}
log("Building environment...")
val nixGradleEnv = buildEnv(models)
val dependencySets = mutableListOf<DependencySet>()
val outDir = outDir ?: projectDir
connect(config).use { connection ->
dependencySets.add(runBlocking { connection.build("project", config) })
}
val json = outDir.resolve("$envFile.json")
log("Writing environment to $json")
json.sink().buffer().use { out ->
Moshi.Builder().build()
.adapter<Map<String, NixGradleEnv>>(
Types.newParameterizedType(Map::class.java, String::class.java, NixGradleEnv::class.java)
for (buildSrc in buildSrcs) {
connect(config, buildSrc).use { connection ->
dependencySets.add(
runBlocking {
connection.build(
buildSrc.toRelativeString(projectDir.absoluteFile).replace('/', '_'),
config,
listOf(RESOLVE_ALL_TASK),
)
},
)
.indent(" ")
.toJson(out, nixGradleEnv)
out.flush()
}
val nix = outDir.resolve("$envFile.nix")
log("Writing Nix script to $nix")
File(shareDir).resolve("gradle-env.nix").copyTo(nix, overwrite = true)
}
}
fun ProcessedArgument<String, String>.projectDir(): ProcessedArgument<File, File> {
return convert(completionCandidates = CompletionCandidates.Path) {
File(it).also { file ->
if (!file.exists()) fail("Directory \"$file\" does not exist.")
if (file.isFile) fail("Directory \"$file\" is a file.")
if (!file.canRead()) fail("Directory \"$file\" is not readable.")
if (!file.isProjectRoot()) fail("Directory \"$file\" is not a Gradle project.")
val env =
try {
processDependencies(config, dependencySets)
} catch (e: Throwable) {
logger.error("Dependency parsing failed", e)
}
config.outDir.mkdirs()
val outLockFile = config.outDir.resolve(lockFile)
logger.info("Writing lock file to $outLockFile")
outLockFile.outputStream().buffered().use { output ->
JsonFormat.encodeToStream(env, output)
}
}
}
fun main(args: Array<String>) = Main().main(args)
fun main(args: Array<String>) {
Gradle2Nix().main(args)
}

View File

@@ -0,0 +1,63 @@
package org.nixos.gradle2nix
import org.nixos.gradle2nix.model.DependencyCoordinates
import org.nixos.gradle2nix.model.DependencySet
import kotlin.io.encoding.Base64
import kotlin.io.encoding.ExperimentalEncodingApi
fun processDependencies(
config: Config,
dependencySets: Iterable<DependencySet>,
): Env =
buildMap<DependencyCoordinates, Map<String, Artifact>> {
for (dependencySet in dependencySets) {
val env = dependencySet.toEnv()
for ((id, artifacts) in env) {
merge(id, artifacts) { a, b ->
buildMap {
putAll(a)
for ((name, artifact) in b) {
merge(name, artifact) { aa, ba ->
check(aa.hash == ba.hash) {
config.logger.error(
"""
Conflicting hashes found for $id:$name:
1: ${aa.hash}
2: ${ba.hash}
""".trimIndent(),
)
}
aa
}
}
}
}
}
}
}.mapValues { (_, artifacts) ->
artifacts.toSortedMap()
}.toSortedMap(coordinatesComparator)
.mapKeys { (coordinates, _) -> coordinates.id }
private fun DependencySet.toEnv(): Map<DependencyCoordinates, Map<String, Artifact>> =
dependencies.associate { dep ->
dep.coordinates to
dep.artifacts.associate {
it.name to Artifact(it.url, it.hash.toSri())
}
}
@OptIn(ExperimentalEncodingApi::class, ExperimentalStdlibApi::class)
internal fun String.toSri(): String =
buildString {
append("sha256-")
Base64.encodeToAppendable(hexToByteArray(), this)
}
private val coordinatesComparator: Comparator<DependencyCoordinates> =
compareBy<DependencyCoordinates> { it.group }
.thenBy { it.artifact }
.thenByDescending { Version(it.version) }
.thenByDescending { it.timestamp }

View File

@@ -2,16 +2,13 @@ package org.nixos.gradle2nix
import java.io.File
fun resolveProjects(config: Config) = config.allProjects.run {
if (config.buildSrc) {
flatMap { listOfNotNull(it, it.findBuildSrc()) }
tailrec fun getProjectRoot(path: File): File? {
return if (path.isProjectRoot()) {
path
} else {
this
val parent = path.parentFile ?: return null
return getProjectRoot(parent)
}
}
fun File.findBuildSrc(): File? =
resolve("buildSrc").takeIf { it.isDirectory }
fun File.isProjectRoot(): Boolean =
isDirectory && (resolve("settings.gradle").isFile || resolve("settings.gradle.kts").isFile)
fun File.isProjectRoot(): Boolean = isDirectory && (resolve("settings.gradle").isFile || resolve("settings.gradle.kts").isFile)

View File

@@ -0,0 +1,157 @@
package org.nixos.gradle2nix
import java.util.concurrent.ConcurrentHashMap
class Version(
val source: String,
val parts: List<String>,
base: Version?,
) : Comparable<Version> {
private val base: Version
val numericParts: List<Long?>
init {
this.base = base ?: this
this.numericParts =
parts.map {
try {
it.toLong()
} catch (e: NumberFormatException) {
null
}
}
}
override fun compareTo(other: Version): Int = compare(this, other)
override fun toString(): String = source
override fun equals(other: Any?): Boolean =
when {
other === this -> true
other == null || other !is Version -> false
else -> source == other.source
}
override fun hashCode(): Int = source.hashCode()
companion object {
private val SPECIAL_MEANINGS: Map<String, Int> =
mapOf(
"dev" to -1,
"rc" to 1,
"snapshot" to 2,
"final" to 3,
"ga" to 4,
"release" to 5,
"sp" to 6,
)
private val cache = ConcurrentHashMap<String, Version>()
// From org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionParser
operator fun invoke(original: String): Version =
cache.getOrPut(original) {
val parts = mutableListOf<String>()
var digit = false
var startPart = 0
var pos = 0
var endBase = 0
var endBaseStr = 0
while (pos < original.length) {
val ch = original[pos]
if (ch == '.' || ch == '_' || ch == '-' || ch == '+') {
parts.add(original.substring(startPart, pos))
startPart = pos + 1
digit = false
if (ch != '.' && endBaseStr == 0) {
endBase = parts.size
endBaseStr = pos
}
} else if (ch in '0'..'9') {
if (!digit && pos > startPart) {
if (endBaseStr == 0) {
endBase = parts.size + 1
endBaseStr = pos
}
parts.add(original.substring(startPart, pos))
startPart = pos
}
digit = true
} else {
if (digit) {
if (endBaseStr == 0) {
endBase = parts.size + 1
endBaseStr = pos
}
parts.add(original.substring(startPart, pos))
startPart = pos
}
digit = false
}
pos++
}
if (pos > startPart) {
parts.add(original.substring(startPart, pos))
}
var base: Version? = null
if (endBaseStr > 0) {
base = Version(original.substring(0, endBaseStr), parts.subList(0, endBase), null)
}
Version(original, parts, base)
}
// From org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.StaticVersionComparator
private fun compare(
version1: Version,
version2: Version,
): Int {
if (version1 == version2) {
return 0
}
val parts1 = version1.parts
val parts2 = version2.parts
val numericParts1 = version1.numericParts
val numericParts2 = version2.numericParts
var lastIndex = -1
for (i in 0..<(minOf(parts1.size, parts2.size))) {
lastIndex = i
val part1 = parts1[i]
val part2 = parts2[i]
val numericPart1 = numericParts1[i]
val numericPart2 = numericParts2[i]
when {
part1 == part2 -> continue
numericPart1 != null && numericPart2 == null -> return 1
numericPart2 != null && numericPart1 == null -> return -1
numericPart1 != null && numericPart2 != null -> {
val result = numericPart1.compareTo(numericPart2)
if (result == 0) continue
return result
}
else -> {
// both are strings, we compare them taking into account special meaning
val sm1 = SPECIAL_MEANINGS[part1.lowercase()]
val sm2 = SPECIAL_MEANINGS[part2.lowercase()]
if (sm1 != null) return sm1 - (sm2 ?: 0)
if (sm2 != null) return -sm2
return part1.compareTo(part2)
}
}
}
if (lastIndex < parts1.size) {
return if (numericParts1[lastIndex] == null) -1 else 1
}
if (lastIndex < parts2.size) {
return if (numericParts2[lastIndex] == null) 1 else -1
}
return 0
}
}
}

View File

@@ -1,19 +0,0 @@
package org.nixos.gradle2nix
import org.spekframework.spek2.Spek
import org.spekframework.spek2.style.specification.describe
import strikt.api.expectThat
import strikt.assertions.containsKey
object BuildSrcTest : Spek({
fixture("buildsrc/plugin-in-buildsrc/kotlin")
val fixture: Fixture by memoized()
describe("project with plugin in buildSrc") {
fixture.run()
it("should include buildSrc in gradle env", timeout = 0) {
expectThat(fixture.env()).containsKey("buildSrc")
}
}
})

View File

@@ -0,0 +1,51 @@
package org.nixos.gradle2nix
import io.kotest.core.extensions.install
import io.kotest.core.spec.style.FunSpec
class GoldenTest :
FunSpec({
install(MavenRepo)
context("artifacts") {
golden("artifacts/sources-javadoc", "-a", "sources,javadoc")
}
context("basic") {
golden("basic/basic-java-project")
golden("basic/basic-kotlin-project")
}
context("buildsrc") {
golden("buildsrc/plugin-in-buildsrc")
}
context("dependency") {
golden("dependency/classifier")
golden("dependency/maven-bom")
golden("dependency/snapshot")
golden("dependency/snapshot-dynamic")
golden("dependency/snapshot-redirect")
}
context("included-build") {
golden("included-build")
}
context("integration") {
golden("integration/settings-buildscript")
}
context("ivy") {
golden("ivy/basic")
}
context("plugin") {
golden("plugin/resolves-from-default-repo")
}
// FIXME Need s3mock or similar to generate golden data.
xcontext("s3") {
golden("s3/maven")
golden("s3/maven-snapshot")
}
context("settings") {
golden("settings/buildscript")
golden("settings/dependency-resolution-management")
}
context("subprojects") {
golden("subprojects/multi-module")
}
})

View File

@@ -1,57 +1,209 @@
package org.nixos.gradle2nix
import com.squareup.moshi.Moshi
import com.squareup.moshi.Types
import okio.buffer
import okio.source
import org.spekframework.spek2.dsl.Root
import strikt.api.expectThat
import strikt.assertions.exists
import strikt.assertions.isNotNull
import strikt.assertions.toPath
import com.github.ajalt.clikt.core.main
import io.kotest.assertions.fail
import io.kotest.common.ExperimentalKotest
import io.kotest.common.KotestInternal
import io.kotest.core.extensions.MountableExtension
import io.kotest.core.listeners.AfterSpecListener
import io.kotest.core.names.TestName
import io.kotest.core.source.sourceRef
import io.kotest.core.spec.Spec
import io.kotest.core.test.NestedTest
import io.kotest.core.test.TestScope
import io.kotest.core.test.TestType
import io.kotest.matchers.file.shouldBeAFile
import io.kotest.matchers.shouldBe
import io.ktor.http.ContentType
import io.ktor.http.Url
import io.ktor.server.engine.embeddedServer
import io.ktor.server.http.content.staticFiles
import io.ktor.server.netty.Netty
import io.ktor.server.netty.NettyApplicationEngine
import io.ktor.server.routing.routing
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.SerializationException
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.decodeFromStream
import kotlinx.serialization.json.encodeToStream
import java.io.File
import java.io.FileFilter
import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.Paths
import kotlin.random.Random
private val moshi = Moshi.Builder().build()
private val app = Gradle2Nix()
class Fixture(val project: Path) {
private val app = Main()
fun run(vararg args: String) {
app.main(args.toList() + project.toString())
@OptIn(ExperimentalSerializationApi::class)
private val json =
Json {
prettyPrint = true
prettyPrintIndent = " "
}
fun env(): Map<String, NixGradleEnv> {
val file = (app.outDir ?: project.toFile()).resolve("${app.envFile}.json")
expectThat(file).toPath().exists()
val env = file.source().buffer().use { source ->
moshi
.adapter<Map<String, NixGradleEnv>>(
Types.newParameterizedType(Map::class.java, String::class.java, NixGradleEnv::class.java)
).fromJson(source)
}
expectThat(env).isNotNull()
return env!!
}
}
val testLogger = Logger(logLevel = LogLevel.DEBUG, stacktrace = true)
fun Root.fixture(name: String) {
val fixture by memoized(
factory = {
val url = checkNotNull(Thread.currentThread().contextClassLoader.getResource(name)?.toURI()) {
"$name: No test fixture found"
fun fixture(path: String): File = Paths.get("../fixtures", path).toFile()
@OptIn(ExperimentalKotest::class, ExperimentalSerializationApi::class, KotestInternal::class)
suspend fun TestScope.fixture(
project: String,
vararg args: String,
test: suspend TestScope.(File, Env) -> Unit,
) {
val tmp = Paths.get("build/tmp/gradle2nix").apply { toFile().mkdirs() }
val baseDir = Paths.get("../fixtures/projects", project).toFile()
val children =
baseDir
.listFiles(FileFilter { it.isDirectory && (it.name == "groovy" || it.name == "kotlin") })
?.toList()
val cases =
if (children.isNullOrEmpty()) {
listOf(project to baseDir)
} else {
children.map { "$project.${it.name}" to it }
}
val fixtureRoot = Paths.get(url)
val dest = createTempDir("gradle2nix").toPath()
val src = checkNotNull(fixtureRoot.takeIf { Files.exists(it) }) {
"$name: Test fixture not found: $fixtureRoot"
for (case in cases) {
registerTestCase(
NestedTest(
name = TestName(case.first),
disabled = false,
config = null,
type = TestType.Dynamic,
source = sourceRef(),
) {
var dirName = case.second.toString().replace("/", ".")
while (dirName.startsWith(".")) dirName = dirName.removePrefix(".")
while (dirName.endsWith(".")) dirName = dirName.removeSuffix(".")
val tempDir = File(tmp.toFile(), dirName)
tempDir.deleteRecursively()
case.second.copyRecursively(tempDir)
if (!tempDir.resolve("settings.gradle").exists() && !tempDir.resolve("settings.gradle.kts").exists()) {
Files.createFile(tempDir.resolve("settings.gradle").toPath())
}
src.toFile().copyRecursively(dest.toFile())
Fixture(dest)
app.main(
args.toList() +
listOf(
"-p",
tempDir.toString(),
"--log",
"debug",
"--stacktrace",
"--dump-events",
"--",
"-Dorg.nixos.gradle2nix.m2=$m2",
"--info",
),
)
val file = tempDir.resolve(app.lockFile)
file.shouldBeAFile()
val env: Env =
file.inputStream().buffered().use { input ->
Json.decodeFromStream(input)
}
test(tempDir, env)
},
destructor = {
it.project.toFile().deleteRecursively()
}
)
}
}
val updateGolden = System.getProperty("org.nixos.gradle2nix.update-golden") != null
@OptIn(ExperimentalSerializationApi::class)
suspend fun TestScope.golden(
project: String,
vararg args: String,
) {
fixture(project, *args) { dir, env ->
val filename = "${testCase.name.testName}.json"
val goldenFile = File("../fixtures/golden/$filename")
if (updateGolden) {
goldenFile.parentFile.mkdirs()
goldenFile.outputStream().buffered().use { output ->
json.encodeToStream(env, output)
}
} else {
if (!goldenFile.exists()) {
fail("Golden file '$filename' doesn't exist. Run with --update-golden to generate.")
}
val goldenData =
try {
goldenFile.readText()
} catch (e: SerializationException) {
fail("Failed to load golden data from '$filename'. Run with --update-golden to regenerate.")
}
json.encodeToString(env) shouldBe goldenData
}
}
}
val m2: String = requireNotNull(System.getProperty("org.nixos.gradle2nix.m2"))
object MavenRepo : MountableExtension<MavenRepo.Config, NettyApplicationEngine>, AfterSpecListener {
class Config {
var repository: File = File("../fixtures/repositories/m2")
var path: String = ""
var port: Int? = null
var host: String = DEFAULT_HOST
}
const val DEFAULT_HOST = "0.0.0.0"
private val coroutineScope = CoroutineScope(Dispatchers.Default)
private var server: NettyApplicationEngine? = null
private val config = Config()
init {
require(config.repository.exists()) {
"test repository doesn't exist: ${config.repository}"
}
val m2Url = Url(m2)
config.path = m2Url.encodedPath
config.host = m2Url.host
config.port = m2Url.port
}
override fun mount(configure: Config.() -> Unit): NettyApplicationEngine {
config.configure()
// try 3 times to find a port if random
return tryStart(3).also { this.server = it }
}
private fun tryStart(attempts: Int): NettyApplicationEngine =
try {
val p = config.port ?: Random.nextInt(10000, 65000)
val s =
embeddedServer(Netty, port = p, host = config.host) {
routing {
staticFiles(
remotePath = config.path,
dir = config.repository,
index = null,
) {
enableAutoHeadResponse()
contentType { path ->
when (path.extension) {
"pom", "xml" -> ContentType.Text.Xml
"jar" -> ContentType("application", "java-archive")
else -> ContentType.Text.Plain
}
}
}
}
}
coroutineScope.launch { s.start(wait = true) }
s.engine
} catch (e: Throwable) {
if (config.port == null && attempts > 0) tryStart(attempts - 1) else throw e
}
override suspend fun afterSpec(spec: Spec) {
server?.stop()
}
}

View File

@@ -5,7 +5,6 @@
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -1,55 +1,19 @@
plugins {
base
idea
kotlin("jvm") version embeddedKotlinVersion apply false
kotlin("kapt") version embeddedKotlinVersion apply false
id("com.github.johnrengelman.shadow") version "5.2.0" apply false
id("org.ajoberstar.stutter") version "0.5.1" apply false
alias(libs.plugins.kotlin.serialization) apply false
}
group = "org.nixos.gradle2nix"
version = property("VERSION") ?: "unspecified"
subprojects {
repositories {
jcenter()
maven { url = uri("https://repo.gradle.org/gradle/libs-releases") }
}
group = rootProject.group
version = rootProject.version
}
allprojects {
plugins.withType<JavaBasePlugin> {
this@allprojects.withConvention(JavaPluginConvention::class) {
sourceSets.all {
configurations {
named(compileClasspathConfigurationName) {
resolutionStrategy.activateDependencyLocking()
}
named(runtimeClasspathConfigurationName) {
resolutionStrategy.activateDependencyLocking()
}
}
}
tasks.register("lock") {
doFirst {
assert(gradle.startParameter.isWriteDependencyLocks)
file("buildscript-gradle.lockfile").delete()
file("gradle.lockfile").delete()
}
doLast {
configurations.matching { it.isCanBeResolved}.all { resolve() }
}
}
}
}
}
tasks {
wrapper {
gradleVersion = "6.8-rc-1";
gradleVersion = libs.versions.gradle.get()
distributionType = Wrapper.DistributionType.ALL
}
}

View File

@@ -0,0 +1,8 @@
plugins {
`kotlin-dsl`
}
dependencies {
implementation(libs.gradle.kotlin)
implementation(libs.gradle.shadow)
}

View File

@@ -0,0 +1,14 @@
@file:Suppress("UnstableApiUsage")
dependencyResolutionManagement {
repositories {
mavenCentral()
gradlePluginPortal()
}
versionCatalogs {
register("libs") {
from(files("../gradle/libs.versions.toml"))
}
}
}

View File

@@ -0,0 +1,36 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
id("org.jetbrains.kotlin.jvm")
}
dependencies {
compileOnly(kotlin("stdlib"))
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlin.compilerOptions {
@Suppress("DEPRECATION") // we can't use api version greater than 1.4 as minimal supported Gradle version uses kotlin-stdlib 1.4
apiVersion.set(KotlinVersion.KOTLIN_1_4)
@Suppress("DEPRECATION") // we can't use language version greater than 1.5 as minimal supported Gradle embeds Kotlin 1.4
languageVersion.set(KotlinVersion.KOTLIN_1_5)
jvmTarget.set(JvmTarget.JVM_1_8)
optIn.add("kotlin.RequiresOptIn")
freeCompilerArgs.addAll(
listOf(
"-Xconsistent-data-class-copy-visibility",
"-Xskip-prerelease-check",
"-Xsuppress-version-warnings",
// We have to override the default value for `-Xsam-conversions` to `class`
// otherwise the compiler would compile lambdas using invokedynamic,
// such lambdas are not serializable so are not compatible with Gradle configuration cache.
// It doesn't lead to a significant difference in binaries sizes, and previously (before LV 1.5) the `class` value was set by default.
"-Xsam-conversions=class",
),
)
}

View File

@@ -0,0 +1,62 @@
@file:Suppress("UnstableApiUsage")
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
plugins {
id("gradle-kotlin-conventions")
id("io.github.goooler.shadow")
`java-gradle-plugin`
}
dependencies {
}
configure<GradlePluginDevelopmentExtension> {
plugins {
register("gradle2nix") {
id = "org.nixos.gradle2nix"
displayName = "gradle2nix"
description = "Expose Gradle tooling model for the gradle2nix tool"
implementationClass = "org.nixos.gradle2nix.Gradle2NixPlugin"
}
}
}
configurations {
"api" {
dependencies.remove(project.dependencies.gradleApi())
}
}
tasks {
"jar" {
enabled = false
}
named("shadowJar", ShadowJar::class) {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
isPreserveFileTimestamps = false
isReproducibleFileOrder = true
filePermissions { unix("644") }
dirPermissions { unix("755") }
filesMatching("**/bin/*") {
filePermissions { unix("755") }
}
filesMatching("**/bin/*.bat") {
filePermissions { unix("644") }
}
relocate("kotlinx", "${project.group}.shadow.kotlinx")
relocate("org.intellij", "${project.group}.shadow.intellij")
relocate("org.jetbrains", "${project.group}.shadow.jetbrains")
dependencies {
exclude { it.moduleGroup == "org.jetbrains.kotlin" && it.moduleName == "kotlin-stdlib" }
exclude { it.moduleGroup == "org.jetbrains.kotlin" && it.moduleName == "kotlin-stdlib-common" }
exclude { it.moduleGroup == "org.jetbrains.kotlin" && it.moduleName == "kotlin-stdlib-jdk7" }
exclude { it.moduleGroup == "org.jetbrains.kotlin" && it.moduleName == "kotlin-stdlib-jdk8" }
exclude { it.moduleGroup == "org.jetbrains.kotlin" && it.moduleName == "kotlin-reflect" }
exclude { it.moduleGroup == "org.jetbrains.kotlin" && it.moduleName == "kotlin-script-runtime" }
}
}
}

View File

@@ -1,38 +1,12 @@
{ pkgs ? import <nixpkgs> {} }:
with pkgs;
{
pkgs ? import <nixpkgs> { },
}:
let
buildGradle = callPackage ./gradle-env.nix {};
gradle2nix = buildGradle {
envSpec = ./gradle-env.json;
src = lib.cleanSourceWith {
filter = lib.cleanSourceFilter;
src = lib.cleanSourceWith {
filter = path: type: let baseName = baseNameOf path; in !(
(type == "directory" && (
baseName == "build" ||
baseName == ".idea" ||
baseName == ".gradle"
)) ||
(lib.hasSuffix ".iml" baseName)
);
src = ./.;
scope = pkgs.callPackage ./nix { };
in
scope.gradle2nix.overrideAttrs (attrs: {
passthru = (attrs.passthru or { }) // {
inherit (scope) buildGradlePackage buildMavenRepo gradleSetupHook;
};
};
gradleFlags = [ "installDist" ];
installPhase = ''
mkdir -p $out
cp -r app/build/install/gradle2nix/* $out/
'';
passthru = {
plugin = "${gradle2nix}/share/plugin.jar";
};
};
in gradle2nix
})

View File

@@ -1,30 +0,0 @@
val kotlinVersion = "1.3.61"
val spekVersion = "2.0.9"
plugins {
application
kotlin("jvm") version "1.3.61"
}
dependencies {
compile(kotlin("stdlib"))
implementation("com.natpryce:konfig:1.6.10.0")
implementation("com.github.pengrad:java-telegram-bot-api:4.6.0")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3")
implementation("org.jetbrains.exposed:exposed-core:0.21.1")
implementation("org.jetbrains.exposed", "exposed-dao", "0.21.1")
implementation("org.jetbrains.exposed", "exposed-jdbc", "0.21.1")
implementation("org.jetbrains.exposed", "exposed-jodatime", "0.21.1")
implementation("io.javalin:javalin:3.7.0")
implementation("org.slf4j:slf4j-simple:1.8.0-beta4")
implementation(group = "org.xerial", name = "sqlite-jdbc", version = "3.30.1")
implementation("org.postgresql:postgresql:42.2.2")
implementation("com.fasterxml.jackson.core:jackson-databind:2.10.1")
testImplementation("org.spekframework.spek2:spek-dsl-jvm:$spekVersion")
testRuntimeOnly("org.spekframework.spek2:spek-runner-junit5:$spekVersion")
testCompile("com.winterbe:expekt:0.5.0")
}
repositories {
jcenter()
}

View File

@@ -1,4 +0,0 @@
plugins {
`java-library`
id("com.example.custom-spotless")
}

View File

@@ -1,12 +0,0 @@
plugins {
`kotlin-dsl`
}
repositories {
jcenter()
gradlePluginPortal()
}
dependencies {
implementation("com.diffplug.spotless:spotless-plugin-gradle:3.28.1")
}

View File

@@ -1,11 +0,0 @@
package com.example
plugins {
com.diffplug.gradle.spotless
}
spotless {
kotlin {
ktlint()
}
}

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,20 @@
{
"org.jetbrains:dummy:0.1.2": {
"dummy-0.1.2-javadoc.jar": {
"url": "http://0.0.0.0:8989/m2/org/jetbrains/dummy/0.1.2/dummy-0.1.2-javadoc.jar",
"hash": "sha256-VKSq9XAfCAL64HOpAw9Cz3u1KxCJG/plFoXlYGpsT38="
},
"dummy-0.1.2-sources.jar": {
"url": "http://0.0.0.0:8989/m2/org/jetbrains/dummy/0.1.2/dummy-0.1.2-sources.jar",
"hash": "sha256-P6wF/AUXB4XcW/Yd+E2MsEYQuaLrlAjU9ZCFwl5LpV4="
},
"dummy-0.1.2.jar": {
"url": "http://0.0.0.0:8989/m2/org/jetbrains/dummy/0.1.2/dummy-0.1.2.jar",
"hash": "sha256-cNf6E8g94h1RzuCgeERYjfMYK/FtuxULAmgZ2NbrZHE="
},
"dummy-0.1.2.pom": {
"url": "http://0.0.0.0:8989/m2/org/jetbrains/dummy/0.1.2/dummy-0.1.2.pom",
"hash": "sha256-yAJfpJPhPhaxEwVdOL3zzK0JopTGuV3djT44MWsz1z4="
}
}
}

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,502 @@
{
"com.google.code.gson:gson:2.8.9": {
"gson-2.8.9.jar": {
"url": "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar",
"hash": "sha256-05mSkYVd5JXJTHQ3YbirUXbP6r4oGlqw2OjUUyb9cD4="
},
"gson-2.8.9.pom": {
"url": "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.9/gson-2.8.9.pom",
"hash": "sha256-r97W5qaQ+/OtSuZa2jl/CpCl9jCzA9G3QbnJeSb91N4="
}
},
"com.google.code.gson:gson-parent:2.8.9": {
"gson-parent-2.8.9.pom": {
"url": "https://plugins.gradle.org/m2/com/google/code/gson/gson-parent/2.8.9/gson-parent-2.8.9.pom",
"hash": "sha256-sW4CbmNCfBlyrQ/GhwPsN5sVduQRuknDL6mjGrC7z/s="
}
},
"com.gradle.publish:plugin-publish-plugin:1.2.1": {
"plugin-publish-plugin-1.2.1.jar": {
"url": "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.jar",
"hash": "sha256-KY8MLpeVMhcaBaQWAyY3M7ZfiRE9ToCczQ4mmQFJ3hg="
},
"plugin-publish-plugin-1.2.1.module": {
"url": "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.module",
"hash": "sha256-w98uuag1ZdO2MVDYa0344o9mG1XOzdRJJ+RpMxA2yxk="
},
"plugin-publish-plugin-1.2.1.pom": {
"url": "https://plugins.gradle.org/m2/com/gradle/publish/plugin-publish-plugin/1.2.1/plugin-publish-plugin-1.2.1.pom",
"hash": "sha256-E6X+iu2+Rs/b6hLp/NcJemKygqpqtMkIZWuWzpoqX6M="
}
},
"org.apache:apache:21": {
"apache-21.pom": {
"url": "https://plugins.gradle.org/m2/org/apache/apache/21/apache-21.pom",
"hash": "sha256-rxDBCNoBTxfK+se1KytLWjocGCZfoq+XoyXZFDU3s4A="
}
},
"org.apache.maven:maven:3.6.3": {
"maven-3.6.3.pom": {
"url": "https://plugins.gradle.org/m2/org/apache/maven/maven/3.6.3/maven-3.6.3.pom",
"hash": "sha256-0thiRepmFJvBTS3XK7uWH5ZN1li4CaBXMlLAZTHu7BY="
}
},
"org.apache.maven:maven-model:3.6.3": {
"maven-model-3.6.3.jar": {
"url": "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.jar",
"hash": "sha256-F87x9Y4UbvDX2elrO5LZih1v19KzKIulOOj/Hg2RYM8="
},
"maven-model-3.6.3.pom": {
"url": "https://plugins.gradle.org/m2/org/apache/maven/maven-model/3.6.3/maven-model-3.6.3.pom",
"hash": "sha256-fHIOjLA9KFxxzW4zTZyeWWBivdMQ7grRX1xHmpkxVPA="
}
},
"org.apache.maven:maven-parent:33": {
"maven-parent-33.pom": {
"url": "https://plugins.gradle.org/m2/org/apache/maven/maven-parent/33/maven-parent-33.pom",
"hash": "sha256-OFbj/NFpUC1fEv4kUmBOv2x8Al8VZWv6VY6pntKdc+o="
}
},
"org.gradle.kotlin:gradle-kotlin-dsl-plugins:5.2.0": {
"gradle-kotlin-dsl-plugins-5.2.0.jar": {
"url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/5.2.0/gradle-kotlin-dsl-plugins-5.2.0.jar",
"hash": "sha256-SKlcMPRlehDfloYC01LJ2GTZemYholfoFQjINWDE/q4="
},
"gradle-kotlin-dsl-plugins-5.2.0.module": {
"url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/5.2.0/gradle-kotlin-dsl-plugins-5.2.0.module",
"hash": "sha256-fxo3x8yLU7tmBAqrbAacidiqWOJ/+nH3s2HGROtaD7A="
},
"gradle-kotlin-dsl-plugins-5.2.0.pom": {
"url": "https://plugins.gradle.org/m2/org/gradle/kotlin/gradle-kotlin-dsl-plugins/5.2.0/gradle-kotlin-dsl-plugins-5.2.0.pom",
"hash": "sha256-uB9ZcQ4lOEW0+Pbe27BWPWfD5/UPg7AiQZXjo2GAtH8="
}
},
"org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:5.2.0": {
"org.gradle.kotlin.kotlin-dsl.gradle.plugin-5.2.0.pom": {
"url": "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/5.2.0/org.gradle.kotlin.kotlin-dsl.gradle.plugin-5.2.0.pom",
"hash": "sha256-pXu0ObpCYKJW8tYIRx1wgRiQd6Ck3fsCjdGBe+W8Ejc="
}
},
"org.jetbrains:annotations:13.0": {
"annotations-13.0.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.jar",
"hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg="
},
"annotations-13.0.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.pom",
"hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c="
}
},
"org.jetbrains.intellij.deps:trove4j:1.0.20200330": {
"trove4j-1.0.20200330.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar",
"hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50="
},
"trove4j-1.0.20200330.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom",
"hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k="
}
},
"org.jetbrains.kotlin:kotlin-assignment:2.0.21": {
"kotlin-assignment-2.0.21-gradle85.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/2.0.21/kotlin-assignment-2.0.21-gradle85.jar",
"hash": "sha256-USUeNCELiNTJCAXKZS6Xe93IR4OkVAY5ydIQkJhbrOY="
},
"kotlin-assignment-2.0.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/2.0.21/kotlin-assignment-2.0.21.module",
"hash": "sha256-8638yrZURNtqqzwNfSVoZG7AyS8kWCh/KLKu5POXNtw="
},
"kotlin-assignment-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment/2.0.21/kotlin-assignment-2.0.21.pom",
"hash": "sha256-QBfCQqfb3Oca6ApXB7S/OyOoIr8jpodahFp7UTYhzQ8="
}
},
"org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:2.0.21": {
"kotlin-assignment-compiler-plugin-embeddable-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/2.0.21/kotlin-assignment-compiler-plugin-embeddable-2.0.21.jar",
"hash": "sha256-VNSBSyF3IXiP2GU5gSMImi/P91FQ17NdjnMKI34my9E="
},
"kotlin-assignment-compiler-plugin-embeddable-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-assignment-compiler-plugin-embeddable/2.0.21/kotlin-assignment-compiler-plugin-embeddable-2.0.21.pom",
"hash": "sha256-rIU9chaJ+vEV8RiBCjU2/CcvE1to0CdFOqpW6eY79wc="
}
},
"org.jetbrains.kotlin:kotlin-build-common:2.0.21": {
"kotlin-build-common-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/2.0.21/kotlin-build-common-2.0.21.jar",
"hash": "sha256-cLmHScMJc9O3YhCL37mROSB4swhzCKzTwa0zqg9GIV0="
},
"kotlin-build-common-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/2.0.21/kotlin-build-common-2.0.21.pom",
"hash": "sha256-qNP7huk2cgYkCh2+6LMBCteRP+oY+9Rtv2EB+Yvj4V0="
}
},
"org.jetbrains.kotlin:kotlin-build-statistics:2.0.21": {
"kotlin-build-statistics-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-statistics/2.0.21/kotlin-build-statistics-2.0.21.jar",
"hash": "sha256-gBILdN8DYz1veeCIZBMe7jt6dIb2wF0vLtyGg3U8VNo="
},
"kotlin-build-statistics-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-statistics/2.0.21/kotlin-build-statistics-2.0.21.pom",
"hash": "sha256-/iTcYG/sg+yY3Qi8i7HPmeVAXejpF8URnVoMt++sVZ0="
}
},
"org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21": {
"kotlin-build-tools-api-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/2.0.21/kotlin-build-tools-api-2.0.21.jar",
"hash": "sha256-j8orSvbEzyRWXZp/ZMMXhIlRjQSeEGmB22cY7yLK4Y4="
},
"kotlin-build-tools-api-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-api/2.0.21/kotlin-build-tools-api-2.0.21.pom",
"hash": "sha256-zL2XaTA2Y0gWKVGY5JRFNPr7c9d4+M1NQ588h7CQ9JQ="
}
},
"org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.21": {
"kotlin-build-tools-impl-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-impl/2.0.21/kotlin-build-tools-impl-2.0.21.jar",
"hash": "sha256-um6iTa7URxf1AwcqkcWbDafpyvAAK9DsG+dzKUwSfcs="
},
"kotlin-build-tools-impl-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-tools-impl/2.0.21/kotlin-build-tools-impl-2.0.21.pom",
"hash": "sha256-epPI22tqqFtPyvD0jKcBa5qEzSOWoGUreumt52eaTkE="
}
},
"org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.21": {
"kotlin-compiler-embeddable-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/2.0.21/kotlin-compiler-embeddable-2.0.21.jar",
"hash": "sha256-n6jN0d4NzP/hVMmX1CPsa19TzW2Rd+OnepsN4D+xvIE="
},
"kotlin-compiler-embeddable-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/2.0.21/kotlin-compiler-embeddable-2.0.21.pom",
"hash": "sha256-vUZWpG7EGCUuW8Xhwg6yAp+yqODjzJTu3frH6HyM1bY="
}
},
"org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21": {
"kotlin-compiler-runner-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/2.0.21/kotlin-compiler-runner-2.0.21.jar",
"hash": "sha256-COYFvoEGD/YS0K65QFihm8SsmWJcNcRhxsCzAlYOkQQ="
},
"kotlin-compiler-runner-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/2.0.21/kotlin-compiler-runner-2.0.21.pom",
"hash": "sha256-+Wdq1JVBFLgc39CR6bW0J7xkkc+pRIRmjWU9TRkCPm0="
}
},
"org.jetbrains.kotlin:kotlin-daemon-client:2.0.21": {
"kotlin-daemon-client-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/2.0.21/kotlin-daemon-client-2.0.21.jar",
"hash": "sha256-Nx6gjk8DaILMjgZP/PZEWZDfREKVuh7GiSjnzCtbwBU="
},
"kotlin-daemon-client-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/2.0.21/kotlin-daemon-client-2.0.21.pom",
"hash": "sha256-8oY4JGtQVSC/6TXxXz7POeS6VSb6RcjzKsfeejEjdAA="
}
},
"org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21": {
"kotlin-daemon-embeddable-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/2.0.21/kotlin-daemon-embeddable-2.0.21.jar",
"hash": "sha256-saCnPFAi+N0FpjjGt2sr1zYYGKHzhg/yZEEzsd0r2wM="
},
"kotlin-daemon-embeddable-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/2.0.21/kotlin-daemon-embeddable-2.0.21.pom",
"hash": "sha256-jbZ7QN1gJaLtBpKU8sm8+2uW2zFZz+927deEHCZq+/A="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.21": {
"kotlin-gradle-plugin-2.0.21-gradle85.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/2.0.21/kotlin-gradle-plugin-2.0.21-gradle85.jar",
"hash": "sha256-nfXH/xOx/GislFDKY8UxEYkdb2R73ewPQ5iz5yJb9tk="
},
"kotlin-gradle-plugin-2.0.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/2.0.21/kotlin-gradle-plugin-2.0.21.module",
"hash": "sha256-D5iXoGwHo+h9ZHExzDSQofctGuVMEH8T9yJp1TRLCHo="
},
"kotlin-gradle-plugin-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/2.0.21/kotlin-gradle-plugin-2.0.21.pom",
"hash": "sha256-RenM7OM+TY36mUHMkS81RYIBqdPwQ3IMMket3lf0f/Y="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:2.0.21": {
"kotlin-gradle-plugin-annotations-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/2.0.21/kotlin-gradle-plugin-annotations-2.0.21.jar",
"hash": "sha256-W0cHoy5GfvvhIsMY/2q9yhei/H2Mg/ZgN8mhILbcvC8="
},
"kotlin-gradle-plugin-annotations-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-annotations/2.0.21/kotlin-gradle-plugin-annotations-2.0.21.pom",
"hash": "sha256-P+CLlUN7C074sWt39hqImzn1xGt+lx1N+63mbUQOodg="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin-api:2.0.21": {
"kotlin-gradle-plugin-api-2.0.21-gradle85.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/2.0.21/kotlin-gradle-plugin-api-2.0.21-gradle85.jar",
"hash": "sha256-Uur1LOMDtSneZ6vDusE+TxNZY1dUPfqDHE1y0tYxDlA="
},
"kotlin-gradle-plugin-api-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/2.0.21/kotlin-gradle-plugin-api-2.0.21.jar",
"hash": "sha256-Uur1LOMDtSneZ6vDusE+TxNZY1dUPfqDHE1y0tYxDlA="
},
"kotlin-gradle-plugin-api-2.0.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/2.0.21/kotlin-gradle-plugin-api-2.0.21.module",
"hash": "sha256-z29dNExVVVS/rGQFHq0AhcvUM4Z2uqP8h7UD6eSrvjQ="
},
"kotlin-gradle-plugin-api-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/2.0.21/kotlin-gradle-plugin-api-2.0.21.pom",
"hash": "sha256-gV5yqZ4ZFD1mLSTkYlKlnOdWMC18W9/FlIF9fMexI3g="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin-idea:2.0.21": {
"kotlin-gradle-plugin-idea-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/2.0.21/kotlin-gradle-plugin-idea-2.0.21.jar",
"hash": "sha256-wfTqDBkmfx7tR0tUGwdxXEkWes+/AnqKL9B8u8gbjnI="
},
"kotlin-gradle-plugin-idea-2.0.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/2.0.21/kotlin-gradle-plugin-idea-2.0.21.module",
"hash": "sha256-YqcNAg27B4BkexFVGIBHE+Z2BkBa6XoQ2P2jgpOI0Uk="
},
"kotlin-gradle-plugin-idea-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/2.0.21/kotlin-gradle-plugin-idea-2.0.21.pom",
"hash": "sha256-1GjmNf3dsw9EQEuFixCyfcVm6Z1bVIusEMIjOp7OF74="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:2.0.21": {
"kotlin-gradle-plugin-idea-proto-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/2.0.21/kotlin-gradle-plugin-idea-proto-2.0.21.jar",
"hash": "sha256-UzVXQrV7qOFvvfCiBDn4s0UnYHHtsUTns9puYL42MYg="
},
"kotlin-gradle-plugin-idea-proto-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/2.0.21/kotlin-gradle-plugin-idea-proto-2.0.21.pom",
"hash": "sha256-OMyaLLf55K/UOcMQdvgzFThIsfftITMgCDXRtCDfbqs="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin-model:2.0.21": {
"kotlin-gradle-plugin-model-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/2.0.21/kotlin-gradle-plugin-model-2.0.21.jar",
"hash": "sha256-lR13mJs1cAljH/HvsSsBYczzKcUpxUalKfih0x+bwDw="
},
"kotlin-gradle-plugin-model-2.0.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/2.0.21/kotlin-gradle-plugin-model-2.0.21.module",
"hash": "sha256-6qn9n4b71E/2BwoZfce90ZgPDUHo20myUoA9A6pMVaw="
},
"kotlin-gradle-plugin-model-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/2.0.21/kotlin-gradle-plugin-model-2.0.21.pom",
"hash": "sha256-5RVeYOyr2v1kUmVKaYALyyp37n0fxucH+tOo5p8HTCw="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugins-bom:2.0.21": {
"kotlin-gradle-plugins-bom-2.0.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/2.0.21/kotlin-gradle-plugins-bom-2.0.21.module",
"hash": "sha256-8JRUh/5RlZ/fi2oUQXB6Ke1fGsMaIxx/3r4sPd0i/fE="
},
"kotlin-gradle-plugins-bom-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/2.0.21/kotlin-gradle-plugins-bom-2.0.21.pom",
"hash": "sha256-Z1AT1Mvu4JyIkgriuiRvmfKKeJuHT2NASeAS+j7r9Mg="
}
},
"org.jetbrains.kotlin:kotlin-klib-commonizer-api:2.0.21": {
"kotlin-klib-commonizer-api-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/2.0.21/kotlin-klib-commonizer-api-2.0.21.jar",
"hash": "sha256-R1eJEWW2mPvazo9NpvK8DpiOrvnvNnE1SIZajycGmv0="
},
"kotlin-klib-commonizer-api-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/2.0.21/kotlin-klib-commonizer-api-2.0.21.pom",
"hash": "sha256-Y/6HvSI1sSlAnHIqCbYsIKe3eueQGeIgMSSK9zawPFQ="
}
},
"org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21": {
"kotlin-klib-commonizer-embeddable-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/2.0.21/kotlin-klib-commonizer-embeddable-2.0.21.jar",
"hash": "sha256-2Gv0M4pthBzM37v/LaBb0DpJw9uMP5erhed+AhrQhFs="
},
"kotlin-klib-commonizer-embeddable-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/2.0.21/kotlin-klib-commonizer-embeddable-2.0.21.pom",
"hash": "sha256-esgfO7B8TWqo+pj/WjmaR6vRzhx4bU8/rZbvKBIL34o="
}
},
"org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21": {
"kotlin-native-prebuilt-2.0.21-linux-x86_64.tar.gz": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-prebuilt/2.0.21/kotlin-native-prebuilt-2.0.21-linux-x86_64.tar.gz",
"hash": "sha256-8SXMZFcnRldupsPfHmVklSr9dpJcJNdc/4X4zdRG/ls="
},
"kotlin-native-prebuilt-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-prebuilt/2.0.21/kotlin-native-prebuilt-2.0.21.pom",
"hash": "sha256-Gv4wJE4ZR67Wy+01BBrTbFnw6nZK/bxv/56agY7loEE="
}
},
"org.jetbrains.kotlin:kotlin-native-utils:2.0.21": {
"kotlin-native-utils-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/2.0.21/kotlin-native-utils-2.0.21.jar",
"hash": "sha256-ResIo5Kfl8SKkpEsliV3nRVAvG8/IS+56UYg0DJrzAA="
},
"kotlin-native-utils-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/2.0.21/kotlin-native-utils-2.0.21.pom",
"hash": "sha256-ZpB3PnZJ0dD61V0GCaTiHh68mF3Q+iYenG/9OJhnBh0="
}
},
"org.jetbrains.kotlin:kotlin-reflect:2.0.21": {
"kotlin-reflect-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/2.0.21/kotlin-reflect-2.0.21.jar",
"hash": "sha256-OtL8rQwJ3cCSLeurRETWEhRLe0Zbdai7dYfiDd+v15k="
},
"kotlin-reflect-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/2.0.21/kotlin-reflect-2.0.21.pom",
"hash": "sha256-Aqt66rA8aPQBAwJuXpwnc2DLw2CBilsuNrmjqdjosEk="
}
},
"org.jetbrains.kotlin:kotlin-reflect:1.6.10": {
"kotlin-reflect-1.6.10.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar",
"hash": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM="
},
"kotlin-reflect-1.6.10.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom",
"hash": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak="
}
},
"org.jetbrains.kotlin:kotlin-sam-with-receiver:2.0.21": {
"kotlin-sam-with-receiver-2.0.21-gradle85.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/2.0.21/kotlin-sam-with-receiver-2.0.21-gradle85.jar",
"hash": "sha256-HSNuNiIzuaJx5QsiOlDI2+rdA1C2OiRkYIJWhS2jaKM="
},
"kotlin-sam-with-receiver-2.0.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/2.0.21/kotlin-sam-with-receiver-2.0.21.module",
"hash": "sha256-kJCVCx7oa4b+KWmV2AKG6opPN5+yshjoVvzt0ErS1Hk="
},
"kotlin-sam-with-receiver-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/2.0.21/kotlin-sam-with-receiver-2.0.21.pom",
"hash": "sha256-7lYZBmzLB5zDMy4kcnQ1n9dQXeLVQPuRtyd5ICW2Siw="
}
},
"org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:2.0.21": {
"kotlin-sam-with-receiver-compiler-plugin-embeddable-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/2.0.21/kotlin-sam-with-receiver-compiler-plugin-embeddable-2.0.21.jar",
"hash": "sha256-x88d6VXfIqFihyImvQZ3yaDItmMKLi1z0R0UfNDFO3M="
},
"kotlin-sam-with-receiver-compiler-plugin-embeddable-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver-compiler-plugin-embeddable/2.0.21/kotlin-sam-with-receiver-compiler-plugin-embeddable-2.0.21.pom",
"hash": "sha256-cWKsEOFFTpJ2c7FcrQMp2jgvt1jmVPWfy0AHRZ2eyEE="
}
},
"org.jetbrains.kotlin:kotlin-script-runtime:2.0.21": {
"kotlin-script-runtime-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/2.0.21/kotlin-script-runtime-2.0.21.jar",
"hash": "sha256-nBEfjQit5FVWYnLVYZIa3CsstrekzO442YKcXjocpqM="
},
"kotlin-script-runtime-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/2.0.21/kotlin-script-runtime-2.0.21.pom",
"hash": "sha256-lbLpKa+hBxvZUv0Tey5+gdBP4bu4G3V+vtBrIW5aRSQ="
}
},
"org.jetbrains.kotlin:kotlin-scripting-common:2.0.21": {
"kotlin-scripting-common-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/2.0.21/kotlin-scripting-common-2.0.21.jar",
"hash": "sha256-+H3rKxTQaPmcuhghfYCvhUgcApxzGthwRFjprdnKIPg="
},
"kotlin-scripting-common-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/2.0.21/kotlin-scripting-common-2.0.21.pom",
"hash": "sha256-hP6ezqjlV+/6iFbJAhMlrWPCHZ0TEh6q6xGZ9qZYZXU="
}
},
"org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21": {
"kotlin-scripting-compiler-embeddable-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/2.0.21/kotlin-scripting-compiler-embeddable-2.0.21.jar",
"hash": "sha256-JBPCMP3YzUfrvronPk35TPO0TLPsldLLNUcsk3aMnxw="
},
"kotlin-scripting-compiler-embeddable-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/2.0.21/kotlin-scripting-compiler-embeddable-2.0.21.pom",
"hash": "sha256-1Ch6fUD4+Birv3zJhH5/OSeC0Ufb7WqEQORzvE9r8ug="
}
},
"org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21": {
"kotlin-scripting-compiler-impl-embeddable-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/2.0.21/kotlin-scripting-compiler-impl-embeddable-2.0.21.jar",
"hash": "sha256-btD6W+slRmiDmJtWQfNoCUeSYLcBRTVQL9OHzmx7qDM="
},
"kotlin-scripting-compiler-impl-embeddable-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/2.0.21/kotlin-scripting-compiler-impl-embeddable-2.0.21.pom",
"hash": "sha256-0ysb8kupKaL6MqbjRDIPp7nnvgbON/z3bvOm3ITiNrE="
}
},
"org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21": {
"kotlin-scripting-jvm-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/2.0.21/kotlin-scripting-jvm-2.0.21.jar",
"hash": "sha256-iEJ/D3pMR4RfoiIdKfbg4NfL5zw+34vKMLTYs6M2p3w="
},
"kotlin-scripting-jvm-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/2.0.21/kotlin-scripting-jvm-2.0.21.pom",
"hash": "sha256-opCFi++0KZc09RtT7ZqUFaKU55um/CE8BMQnzch5nA0="
}
},
"org.jetbrains.kotlin:kotlin-stdlib:2.0.21": {
"kotlin-stdlib-2.0.21-all.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/2.0.21/kotlin-stdlib-2.0.21-all.jar",
"hash": "sha256-UP+t6yC00kVqUmWVpPep6FiJaCcVBz5s26Gx2A461Fg="
},
"kotlin-stdlib-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/2.0.21/kotlin-stdlib-2.0.21.jar",
"hash": "sha256-8xzFPxBafkjAk2g7vVQ3Vh0SM5IFE3dLRwgFZBvtvAk="
},
"kotlin-stdlib-2.0.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/2.0.21/kotlin-stdlib-2.0.21.module",
"hash": "sha256-gf1tGBASSH7jJG7/TiustktYxG5bWqcpcaTd8b0VQe0="
},
"kotlin-stdlib-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/2.0.21/kotlin-stdlib-2.0.21.pom",
"hash": "sha256-/LraTNLp85ZYKTVw72E3UjMdtp/R2tHKuqYFSEA+F9o="
}
},
"org.jetbrains.kotlin:kotlin-tooling-core:2.0.21": {
"kotlin-tooling-core-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/2.0.21/kotlin-tooling-core-2.0.21.jar",
"hash": "sha256-W28UhUj+ngdN9R9CJTREM78DdaxbOf/NPXvX1/YC1ik="
},
"kotlin-tooling-core-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/2.0.21/kotlin-tooling-core-2.0.21.pom",
"hash": "sha256-MiVe/o/PESl703OozHf4sYXXOYTpGxieeRZlKb36XVo="
}
},
"org.jetbrains.kotlin:kotlin-util-io:2.0.21": {
"kotlin-util-io-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/2.0.21/kotlin-util-io-2.0.21.jar",
"hash": "sha256-Dv7kwg8+f5ErMceWxOR/nRTqaIA+x+1OXU8kJY46ph4="
},
"kotlin-util-io-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/2.0.21/kotlin-util-io-2.0.21.pom",
"hash": "sha256-4gD5F2fbCFJsjZSt3OB7kPNCVBSwTs/XzPjkHJ8QmKA="
}
},
"org.jetbrains.kotlin:kotlin-util-klib:2.0.21": {
"kotlin-util-klib-2.0.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/2.0.21/kotlin-util-klib-2.0.21.jar",
"hash": "sha256-oTtziWVUtI5L702KRjDqfpQBSaxMrcysBpFGORRlSeo="
},
"kotlin-util-klib-2.0.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/2.0.21/kotlin-util-klib-2.0.21.pom",
"hash": "sha256-724nWZiUO5b1imSWQIUyDxAxdNYJ7GakqUnmASPHmPU="
}
},
"org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.4": {
"kotlinx-coroutines-bom-1.6.4.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.6.4/kotlinx-coroutines-bom-1.6.4.pom",
"hash": "sha256-qyYUhV+6ZqqKQlFNvj1aiEMV/+HtY/WTLnEKgAYkXOE="
}
},
"org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4": {
"kotlinx-coroutines-core-jvm-1.6.4.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.6.4/kotlinx-coroutines-core-jvm-1.6.4.jar",
"hash": "sha256-wkyLsnuzIMSpOHFQGn5eDGFgdjiQexl672dVE9TIIL4="
},
"kotlinx-coroutines-core-jvm-1.6.4.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.6.4/kotlinx-coroutines-core-jvm-1.6.4.module",
"hash": "sha256-DZTIpBSD58Jwfr1pPhsTV6hBUpmM6FVQ67xUykMho6c="
},
"kotlinx-coroutines-core-jvm-1.6.4.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.6.4/kotlinx-coroutines-core-jvm-1.6.4.pom",
"hash": "sha256-Cdlg+FkikDwuUuEmsX6fpQILQlxGnsYZRLPAGDVUciQ="
}
},
"org.sonatype.oss:oss-parent:7": {
"oss-parent-7.pom": {
"url": "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom",
"hash": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
}
}
}

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,12 @@
{
"org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT": {
"test-SNAPSHOT1-2.0.2-SNAPSHOT.jar": {
"url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.jar",
"hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE="
},
"test-SNAPSHOT1-2.0.2-SNAPSHOT.pom": {
"url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.pom",
"hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs="
}
}
}

View File

@@ -0,0 +1,12 @@
{
"org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT": {
"test-SNAPSHOT1-2.0.2-SNAPSHOT.jar": {
"url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.jar",
"hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE="
},
"test-SNAPSHOT1-2.0.2-SNAPSHOT.pom": {
"url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT1/2.0.2-SNAPSHOT/test-SNAPSHOT1-2.0.2-20070310.181613-3.pom",
"hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs="
}
}
}

View File

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

View File

@@ -0,0 +1,12 @@
{
"org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT": {
"test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": {
"url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar",
"hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE="
},
"test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": {
"url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom",
"hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8="
}
}
}

View File

@@ -0,0 +1,12 @@
{
"org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT": {
"test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": {
"url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar",
"hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE="
},
"test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": {
"url": "http://0.0.0.0:8989/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom",
"hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8="
}
}
}

View File

@@ -0,0 +1,32 @@
{
"org.apache:foo:2.0.0": {
"foo-2.0.0.jar": {
"url": "http://0.0.0.0:8989/m2/org/apache/foo/2.0.0/foo-2.0.0.jar",
"hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8="
},
"foo-2.0.0.pom": {
"url": "http://0.0.0.0:8989/m2/org/apache/foo/2.0.0/foo-2.0.0.pom",
"hash": "sha256-gcL/k4xoI5SK4qDNcyH1uHkgiGQv3WohPb45Gsb9gi8="
}
},
"org.apache:foo:1.0.0": {
"foo-1.0.0.jar": {
"url": "http://0.0.0.0:8989/m2/org/apache/foo/1.0.0/foo-1.0.0.jar",
"hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8="
},
"foo-1.0.0.pom": {
"url": "http://0.0.0.0:8989/m2/org/apache/foo/1.0.0/foo-1.0.0.pom",
"hash": "sha256-roNL3MgAJuUPxIdJJiSpjU3yEFlJFDQ99QvnaWlkVcE="
}
},
"org.apache:test:1.0.0": {
"test-1.0.0.jar": {
"url": "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar",
"hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8="
},
"test-1.0.0.pom": {
"url": "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom",
"hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To="
}
}
}

View File

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

View File

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

View File

@@ -0,0 +1,362 @@
{
"net.java.dev.jna:jna:5.6.0": {
"jna-5.6.0.jar": {
"url": "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar",
"hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8="
},
"jna-5.6.0.pom": {
"url": "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom",
"hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg="
}
},
"org.jetbrains:annotations:13.0": {
"annotations-13.0.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar",
"hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg="
},
"annotations-13.0.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom",
"hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c="
}
},
"org.jetbrains.intellij.deps:trove4j:1.0.20200330": {
"trove4j-1.0.20200330.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar",
"hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50="
},
"trove4j-1.0.20200330.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom",
"hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k="
}
},
"org.jetbrains.kotlin:kotlin-android-extensions:1.7.21": {
"kotlin-android-extensions-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar",
"hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8="
},
"kotlin-android-extensions-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom",
"hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0="
}
},
"org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.7.21": {
"kotlin-annotation-processing-gradle-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar",
"hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk="
},
"kotlin-annotation-processing-gradle-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom",
"hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4="
}
},
"org.jetbrains.kotlin:kotlin-build-common:1.7.21": {
"kotlin-build-common-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar",
"hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8="
},
"kotlin-build-common-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom",
"hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718="
}
},
"org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.21": {
"kotlin-compiler-embeddable-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar",
"hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk="
},
"kotlin-compiler-embeddable-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom",
"hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs="
}
},
"org.jetbrains.kotlin:kotlin-compiler-runner:1.7.21": {
"kotlin-compiler-runner-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar",
"hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc="
},
"kotlin-compiler-runner-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom",
"hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw="
}
},
"org.jetbrains.kotlin:kotlin-daemon-client:1.7.21": {
"kotlin-daemon-client-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar",
"hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU="
},
"kotlin-daemon-client-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom",
"hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk="
}
},
"org.jetbrains.kotlin:kotlin-daemon-embeddable:1.7.21": {
"kotlin-daemon-embeddable-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar",
"hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00="
},
"kotlin-daemon-embeddable-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom",
"hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21": {
"kotlin-gradle-plugin-1.7.21-gradle71.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar",
"hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI="
},
"kotlin-gradle-plugin-1.7.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module",
"hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E="
},
"kotlin-gradle-plugin-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.pom",
"hash": "sha256-0gTXpKcf6Scv44M9x0IAkan/EJaky6JfcnihlUI1BGk="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.7.21": {
"kotlin-gradle-plugin-api-1.7.21-gradle71.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar",
"hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE="
},
"kotlin-gradle-plugin-api-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar",
"hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE="
},
"kotlin-gradle-plugin-api-1.7.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module",
"hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10="
},
"kotlin-gradle-plugin-api-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.pom",
"hash": "sha256-89unBFqYcdah5QnkF+tjQa3bmHFaL409ZnJlAdq0s0Y="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.7.21": {
"kotlin-gradle-plugin-idea-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar",
"hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY="
},
"kotlin-gradle-plugin-idea-1.7.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module",
"hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg="
},
"kotlin-gradle-plugin-idea-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.pom",
"hash": "sha256-Flz/idoRsXIpiJPHg0sNQadm1/PdIPoIvfiJxlXD5zc="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.7.21": {
"kotlin-gradle-plugin-idea-proto-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar",
"hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg="
},
"kotlin-gradle-plugin-idea-proto-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom",
"hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.7.21": {
"kotlin-gradle-plugin-model-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar",
"hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg="
},
"kotlin-gradle-plugin-model-1.7.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module",
"hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U="
},
"kotlin-gradle-plugin-model-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.pom",
"hash": "sha256-y2vKOdHhBWBXcMCj3ubUXw58XtPFNGiZ9ycQsf//HaY="
}
},
"org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.7.21": {
"kotlin-klib-commonizer-api-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar",
"hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI="
},
"kotlin-klib-commonizer-api-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom",
"hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA="
}
},
"org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.7.21": {
"kotlin-klib-commonizer-embeddable-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar",
"hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y="
},
"kotlin-klib-commonizer-embeddable-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom",
"hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA="
}
},
"org.jetbrains.kotlin:kotlin-native-utils:1.7.21": {
"kotlin-native-utils-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar",
"hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs="
},
"kotlin-native-utils-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom",
"hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY="
}
},
"org.jetbrains.kotlin:kotlin-project-model:1.7.21": {
"kotlin-project-model-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar",
"hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8="
},
"kotlin-project-model-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom",
"hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs="
}
},
"org.jetbrains.kotlin:kotlin-reflect:1.7.21": {
"kotlin-reflect-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar",
"hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ="
},
"kotlin-reflect-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom",
"hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM="
}
},
"org.jetbrains.kotlin:kotlin-script-runtime:1.7.21": {
"kotlin-script-runtime-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar",
"hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y="
},
"kotlin-script-runtime-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom",
"hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ="
}
},
"org.jetbrains.kotlin:kotlin-scripting-common:1.7.21": {
"kotlin-scripting-common-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar",
"hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q="
},
"kotlin-scripting-common-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom",
"hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4="
}
},
"org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.7.21": {
"kotlin-scripting-compiler-embeddable-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar",
"hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE="
},
"kotlin-scripting-compiler-embeddable-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom",
"hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM="
}
},
"org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.7.21": {
"kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar",
"hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg="
},
"kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom",
"hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM="
}
},
"org.jetbrains.kotlin:kotlin-scripting-jvm:1.7.21": {
"kotlin-scripting-jvm-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar",
"hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4="
},
"kotlin-scripting-jvm-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom",
"hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE="
}
},
"org.jetbrains.kotlin:kotlin-stdlib:1.7.21": {
"kotlin-stdlib-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar",
"hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk="
},
"kotlin-stdlib-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom",
"hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw="
}
},
"org.jetbrains.kotlin:kotlin-stdlib-common:1.7.21": {
"kotlin-stdlib-common-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar",
"hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo="
},
"kotlin-stdlib-common-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom",
"hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q="
}
},
"org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.21": {
"kotlin-stdlib-jdk7-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar",
"hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU="
},
"kotlin-stdlib-jdk7-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom",
"hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw="
}
},
"org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.21": {
"kotlin-stdlib-jdk8-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar",
"hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044="
},
"kotlin-stdlib-jdk8-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom",
"hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k="
}
},
"org.jetbrains.kotlin:kotlin-tooling-core:1.7.21": {
"kotlin-tooling-core-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar",
"hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg="
},
"kotlin-tooling-core-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom",
"hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY="
}
},
"org.jetbrains.kotlin:kotlin-util-io:1.7.21": {
"kotlin-util-io-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar",
"hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800="
},
"kotlin-util-io-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom",
"hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8="
}
},
"org.jetbrains.kotlin:kotlin-util-klib:1.7.21": {
"kotlin-util-klib-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar",
"hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs="
},
"kotlin-util-klib-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom",
"hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU="
}
},
"org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.7.21": {
"org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom",
"hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30="
}
},
"org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": {
"kotlinx-coroutines-core-jvm-1.5.0.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar",
"hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s="
},
"kotlinx-coroutines-core-jvm-1.5.0.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module",
"hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4="
},
"kotlinx-coroutines-core-jvm-1.5.0.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom",
"hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs="
}
}
}

View File

@@ -0,0 +1,362 @@
{
"net.java.dev.jna:jna:5.6.0": {
"jna-5.6.0.jar": {
"url": "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar",
"hash": "sha256-VVfiNaiqL5dm1dxgnWeUjyqIMsLXls6p7x1svgs7fq8="
},
"jna-5.6.0.pom": {
"url": "https://plugins.gradle.org/m2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom",
"hash": "sha256-X+gbAlWXjyRhbTexBgi3lJil8wc+HZsgONhzaoMfJgg="
}
},
"org.jetbrains:annotations:13.0": {
"annotations-13.0.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar",
"hash": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg="
},
"annotations-13.0.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom",
"hash": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c="
}
},
"org.jetbrains.intellij.deps:trove4j:1.0.20200330": {
"trove4j-1.0.20200330.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.jar",
"hash": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50="
},
"trove4j-1.0.20200330.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20200330/trove4j-1.0.20200330.pom",
"hash": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k="
}
},
"org.jetbrains.kotlin:kotlin-android-extensions:1.7.21": {
"kotlin-android-extensions-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.jar",
"hash": "sha256-JVeliP7QxmbRVq1uDfXjFOqz1p5m6aJyJ5uaRiQ0xq8="
},
"kotlin-android-extensions-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.7.21/kotlin-android-extensions-1.7.21.pom",
"hash": "sha256-8pic3UN0A8hyZc/K8GHSFOaGlVyX40ntFWa6FqouDI0="
}
},
"org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.7.21": {
"kotlin-annotation-processing-gradle-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.jar",
"hash": "sha256-RhyKdFvNVeRyXykBIVnUdOEor/G4KlPR80UkYFK5cwk="
},
"kotlin-annotation-processing-gradle-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.7.21/kotlin-annotation-processing-gradle-1.7.21.pom",
"hash": "sha256-r2JZxfjfTezw8FXmZcTLaP8TtK9c1HfuHTO/7gAaFr4="
}
},
"org.jetbrains.kotlin:kotlin-build-common:1.7.21": {
"kotlin-build-common-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.jar",
"hash": "sha256-Y3O9HhUPfcsnL1KvvBWZBkCSqddbKM7WvroA/qy6u/8="
},
"kotlin-build-common-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.7.21/kotlin-build-common-1.7.21.pom",
"hash": "sha256-msmBVHbIUfFKH3QeG46CJRxyepVGgMdXT4owUn2z718="
}
},
"org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.21": {
"kotlin-compiler-embeddable-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.jar",
"hash": "sha256-Ty5JK8x5XgaA4/h67qGtrp8wbK9SBAuUpvoPiP2skvk="
},
"kotlin-compiler-embeddable-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.7.21/kotlin-compiler-embeddable-1.7.21.pom",
"hash": "sha256-CwIzMip2MO/eEzUmjkYSPw1tNjg5gg/TfE7Lbv+njjs="
}
},
"org.jetbrains.kotlin:kotlin-compiler-runner:1.7.21": {
"kotlin-compiler-runner-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.jar",
"hash": "sha256-LdVae/7udr97ASbFtx0FuJmBK6a0Cjc1n50T+uIC8yc="
},
"kotlin-compiler-runner-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.7.21/kotlin-compiler-runner-1.7.21.pom",
"hash": "sha256-+JDieVykDuyu+jpdjkOND3C7YCo5SUe7rOp2Quqy+Tw="
}
},
"org.jetbrains.kotlin:kotlin-daemon-client:1.7.21": {
"kotlin-daemon-client-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.jar",
"hash": "sha256-tyPlHq8syE/a+sqHJnk/7I1SFyUNiAv0eDA/JE3UGoU="
},
"kotlin-daemon-client-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.7.21/kotlin-daemon-client-1.7.21.pom",
"hash": "sha256-Be4Gj7v3IvWRSlqiWO6KKLZChF9B1/+bVGhtXKJbvxk="
}
},
"org.jetbrains.kotlin:kotlin-daemon-embeddable:1.7.21": {
"kotlin-daemon-embeddable-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.jar",
"hash": "sha256-A+bwJUNSJIlOSe5e2EfLCwtKh540z6uQ1wzakmKnV00="
},
"kotlin-daemon-embeddable-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.7.21/kotlin-daemon-embeddable-1.7.21.pom",
"hash": "sha256-vB3pwgh7ouTlQQF6i66PQF7IAKGK5MJH6R8rVedh5kk="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21": {
"kotlin-gradle-plugin-1.7.21-gradle71.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21-gradle71.jar",
"hash": "sha256-P12cqfSxiGOZjcVpNIk9m1ICRRzucJ+uuXbI+rI2cyI="
},
"kotlin-gradle-plugin-1.7.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.module",
"hash": "sha256-j6I2KYtJBynes0XjG8ZPKSj3wbXxwjH8ZtvINlnBZ+E="
},
"kotlin-gradle-plugin-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.7.21/kotlin-gradle-plugin-1.7.21.pom",
"hash": "sha256-0gTXpKcf6Scv44M9x0IAkan/EJaky6JfcnihlUI1BGk="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.7.21": {
"kotlin-gradle-plugin-api-1.7.21-gradle71.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21-gradle71.jar",
"hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE="
},
"kotlin-gradle-plugin-api-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.jar",
"hash": "sha256-rflytT2LY7s2jZA88y6bB+pTZW6PnaXxDfuv03gxviE="
},
"kotlin-gradle-plugin-api-1.7.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.module",
"hash": "sha256-zGXnGhweng0JaG9cpJGORShIY1q7VCl15HwYlnw6A10="
},
"kotlin-gradle-plugin-api-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.21/kotlin-gradle-plugin-api-1.7.21.pom",
"hash": "sha256-89unBFqYcdah5QnkF+tjQa3bmHFaL409ZnJlAdq0s0Y="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.7.21": {
"kotlin-gradle-plugin-idea-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.jar",
"hash": "sha256-C1dqyzeBqctWEKphxbev3zKQ/C2digzUv+FTe4dcReY="
},
"kotlin-gradle-plugin-idea-1.7.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.module",
"hash": "sha256-ygHy2JJMcpaXMax+oVbwi7GP60LDEAClIj2dwW1ZuTg="
},
"kotlin-gradle-plugin-idea-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1.7.21/kotlin-gradle-plugin-idea-1.7.21.pom",
"hash": "sha256-Flz/idoRsXIpiJPHg0sNQadm1/PdIPoIvfiJxlXD5zc="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.7.21": {
"kotlin-gradle-plugin-idea-proto-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.jar",
"hash": "sha256-NZhwZybLzo0oE05oiZw9WAv3LH6/kJcUHY28rtgnmHg="
},
"kotlin-gradle-plugin-idea-proto-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1.7.21/kotlin-gradle-plugin-idea-proto-1.7.21.pom",
"hash": "sha256-PRwDYK9odF8qAyoMAYR//Pnriq1wa/ZZydhAoYTsXyM="
}
},
"org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.7.21": {
"kotlin-gradle-plugin-model-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.jar",
"hash": "sha256-FNP/F7o8tMi+uK3297QFB4gTS4kbsTyr5yPIwQ0dDhg="
},
"kotlin-gradle-plugin-model-1.7.21.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.module",
"hash": "sha256-kCJoZCp1guVF4xgQnjdIw3WxOLCKFVuBX2yAi7vuR7U="
},
"kotlin-gradle-plugin-model-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.7.21/kotlin-gradle-plugin-model-1.7.21.pom",
"hash": "sha256-y2vKOdHhBWBXcMCj3ubUXw58XtPFNGiZ9ycQsf//HaY="
}
},
"org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.7.21": {
"kotlin-klib-commonizer-api-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.jar",
"hash": "sha256-MOGWrbAAH9F7ZgNe2QcNPw5Hui0ycTt1wwPGt7e3FeI="
},
"kotlin-klib-commonizer-api-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-klib-commonizer-api/1.7.21/kotlin-klib-commonizer-api-1.7.21.pom",
"hash": "sha256-so6g3vy5lNH7U6e7olh9J0DG0mAXk2UglP1ox0Ul0CA="
}
},
"org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.7.21": {
"kotlin-klib-commonizer-embeddable-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.jar",
"hash": "sha256-nTpktCC+2+20HV5tsJ28h2FKffCBR5PACQqDYJBp+1Y="
},
"kotlin-klib-commonizer-embeddable-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/1.7.21/kotlin-klib-commonizer-embeddable-1.7.21.pom",
"hash": "sha256-bOmRoyzYOdq3wbf88+1xbr6XgbRgg3ViDC9fH8RwjrA="
}
},
"org.jetbrains.kotlin:kotlin-native-utils:1.7.21": {
"kotlin-native-utils-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.jar",
"hash": "sha256-k1KYF/2Nj9hlItZqqtyr0UKhcueMz+uUnNKJ40xw+Qs="
},
"kotlin-native-utils-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.7.21/kotlin-native-utils-1.7.21.pom",
"hash": "sha256-CEYFdUhagoAZC0g8H3fyCk063IegIXTzDuxVdNm65FY="
}
},
"org.jetbrains.kotlin:kotlin-project-model:1.7.21": {
"kotlin-project-model-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.jar",
"hash": "sha256-4htTvrj3SxM6Y4mClPSlfcSiKJvoVfZrD5rosVYjFT8="
},
"kotlin-project-model-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-project-model/1.7.21/kotlin-project-model-1.7.21.pom",
"hash": "sha256-JQfT7SKoHyssNSxMUOY1MivHEQClFQJN0NtQRifJ8Bs="
}
},
"org.jetbrains.kotlin:kotlin-reflect:1.7.21": {
"kotlin-reflect-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.jar",
"hash": "sha256-wbF65MSTF+7Sb3ecM8lpBEbFZp6zx+Jsibbg1s8sogQ="
},
"kotlin-reflect-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.21/kotlin-reflect-1.7.21.pom",
"hash": "sha256-Xn69/iAG9vHksPORwbqBhTmKj2NF2xpStYTx40Cz8EM="
}
},
"org.jetbrains.kotlin:kotlin-script-runtime:1.7.21": {
"kotlin-script-runtime-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.jar",
"hash": "sha256-LEmLbZiWTK3dS1hLe0mPmxCPaf8akVOrxlt02uQJJ/Y="
},
"kotlin-script-runtime-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/1.7.21/kotlin-script-runtime-1.7.21.pom",
"hash": "sha256-LuSdd/3Dw6l0akiYCbfGQ3fh2NnEXCDZI+MXI5sicwQ="
}
},
"org.jetbrains.kotlin:kotlin-scripting-common:1.7.21": {
"kotlin-scripting-common-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.jar",
"hash": "sha256-0ZLMLNlDFecijrkTZqNpdmpoIrPOvKwUwR1MSXM2y6Q="
},
"kotlin-scripting-common-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.21/kotlin-scripting-common-1.7.21.pom",
"hash": "sha256-2xzYRWGPDLQXOK3H72jZ+NIjZ1sFg+NbsMCEA30AWe4="
}
},
"org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.7.21": {
"kotlin-scripting-compiler-embeddable-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.jar",
"hash": "sha256-qu9jHwICEl2ZHZgjRxn4ZK1anW40m/DtRGsTd9gXGKE="
},
"kotlin-scripting-compiler-embeddable-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.7.21/kotlin-scripting-compiler-embeddable-1.7.21.pom",
"hash": "sha256-xHXL2+0BepcMD9y46qu1UNc9E6T+a4e3efxM9S148JM="
}
},
"org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.7.21": {
"kotlin-scripting-compiler-impl-embeddable-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.jar",
"hash": "sha256-ZOK9uuvzgJSzwh5nCX5Qe4NoTaQTi6h6CwmhMgOXVCg="
},
"kotlin-scripting-compiler-impl-embeddable-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.7.21/kotlin-scripting-compiler-impl-embeddable-1.7.21.pom",
"hash": "sha256-5c0+HEj+qhC1YVqidOFh5/dcFijcJhZ1ALZ0b4gfweM="
}
},
"org.jetbrains.kotlin:kotlin-scripting-jvm:1.7.21": {
"kotlin-scripting-jvm-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.jar",
"hash": "sha256-Uz441a1oFCoFE0HyK8cO113IUGSxk3rPBRN1XMPwSF4="
},
"kotlin-scripting-jvm-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.7.21/kotlin-scripting-jvm-1.7.21.pom",
"hash": "sha256-cnwtOnluoiOWPu7P7kHvKygsVbZ+V8O0mgFwpMSbfGE="
}
},
"org.jetbrains.kotlin:kotlin-stdlib:1.7.21": {
"kotlin-stdlib-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar",
"hash": "sha256-1Gqddz/7ne5P8adIrIRdyOUABcWJMClRdgorUYe93Rk="
},
"kotlin-stdlib-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.pom",
"hash": "sha256-mzkq1D4vQhJp9jxiBz+ulCN9LjHe7o9msZzBkbTaBqw="
}
},
"org.jetbrains.kotlin:kotlin-stdlib-common:1.7.21": {
"kotlin-stdlib-common-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar",
"hash": "sha256-5iv+yiNhA6EBciS4oiqEHbXcTbSdgKOb1E27IkaEpmo="
},
"kotlin-stdlib-common-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.pom",
"hash": "sha256-LuberkeOGLGvushzHFvxoUe1dWiT1Z7b+nEWBcNDX4Q="
}
},
"org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.21": {
"kotlin-stdlib-jdk7-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar",
"hash": "sha256-uMqg+XFaIYf0+pmQba5Xy6EM7vmn+Ajb7o6vNjWVWKU="
},
"kotlin-stdlib-jdk7-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.pom",
"hash": "sha256-vy6yU9onofKT0RRpMpRBeF26xRceWB8v7Z1aKm2YaZw="
}
},
"org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.21": {
"kotlin-stdlib-jdk8-1.7.21.jar": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar",
"hash": "sha256-sy5K5+uwVycz/kOThb8DT1+u6LbFhdQW/s+TPpSR044="
},
"kotlin-stdlib-jdk8-1.7.21.pom": {
"url": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.pom",
"hash": "sha256-bzuTQ8QS1q5ApMePuKcJhklkUKlSjNusdimojhqlg4k="
}
},
"org.jetbrains.kotlin:kotlin-tooling-core:1.7.21": {
"kotlin-tooling-core-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.jar",
"hash": "sha256-N5fxg1NC+8EuycHU+YMyugKCkaMyUakHySJ9j9lK7kg="
},
"kotlin-tooling-core-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.21/kotlin-tooling-core-1.7.21.pom",
"hash": "sha256-tw2g1Eorhw7Lz85ZcMMOOOLs3htfQqHdRC0TA5gSKUY="
}
},
"org.jetbrains.kotlin:kotlin-util-io:1.7.21": {
"kotlin-util-io-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.jar",
"hash": "sha256-7MKI4AQqAUdgOeILbOXgaRj+8fic+J9V39KO8Xwm800="
},
"kotlin-util-io-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.7.21/kotlin-util-io-1.7.21.pom",
"hash": "sha256-ziTM1kPWW+8Cey9uINCnkhdq29ug2eVVmS5CR6Y3Ne8="
}
},
"org.jetbrains.kotlin:kotlin-util-klib:1.7.21": {
"kotlin-util-klib-1.7.21.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.jar",
"hash": "sha256-UgkkU0RkIN+7h4BN6s6yGfVI53fm3xK35wRKOmaHEgs="
},
"kotlin-util-klib-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-klib/1.7.21/kotlin-util-klib-1.7.21.pom",
"hash": "sha256-D8d7J3Rc+kzuX+AA5tEpmtSUT3rMB4A7u8ws0rAT3oU="
}
},
"org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.7.21": {
"org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.7.21/org.jetbrains.kotlin.jvm.gradle.plugin-1.7.21.pom",
"hash": "sha256-18S+c5nTziimR77ivh3nCwUdpLqoz9X4KYNDJ2UKD30="
}
},
"org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0": {
"kotlinx-coroutines-core-jvm-1.5.0.jar": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.jar",
"hash": "sha256-eNbMcTX4TWkv83Uvz9H6G74JQNffcGUuTx6u7Ax4r7s="
},
"kotlinx-coroutines-core-jvm-1.5.0.module": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.module",
"hash": "sha256-yIXdAoEHbFhDgm3jF+PLzcPYhZ2+71OuHPrNG5xg+W4="
},
"kotlinx-coroutines-core-jvm-1.5.0.pom": {
"url": "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.0/kotlinx-coroutines-core-jvm-1.5.0.pom",
"hash": "sha256-U2IuA3eN+EQPwBIgGjW7S9/kAWTv7GErvvze7LL/wqs="
}
}
}

View File

@@ -0,0 +1,2 @@
{
}

View File

@@ -0,0 +1,2 @@
{
}

View File

@@ -0,0 +1,2 @@
{
}

View File

@@ -0,0 +1,2 @@
{
}

View File

@@ -0,0 +1,12 @@
{
"org.apache:test:1.0.0": {
"test-1.0.0.jar": {
"url": "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar",
"hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8="
},
"test-1.0.0.pom": {
"url": "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom",
"hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To="
}
}
}

View File

@@ -0,0 +1,12 @@
{
"org.apache:test:1.0.0": {
"test-1.0.0.jar": {
"url": "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.jar",
"hash": "sha256-M95zEuAwVCam7c2rKIET5qs4Q60sA84RyTA3a9jdQd8="
},
"test-1.0.0.pom": {
"url": "http://0.0.0.0:8989/m2/org/apache/test/1.0.0/test-1.0.0.pom",
"hash": "sha256-sYk8m4+T+hRJ+43tpPkthrE/JftrsMnmuzORCLCK1To="
}
}
}

View File

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

View File

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

View File

@@ -1,9 +0,0 @@
with (import <nixpkgs> {});
let
buildGradle = callPackage ./gradle-env.nix {};
in
buildGradle {
envSpec = ./gradle-env.json;
src = ./.;
gradleFlags = [ "tasks" ];
}

View File

@@ -1,456 +0,0 @@
{
"": {
"name": "settings-buildscript",
"version": "1.1.0",
"path": "",
"gradle": {
"version": "5.0",
"type": "bin",
"url": "https://services.gradle.org/distributions/gradle-5.0-bin.zip",
"sha256": "6157ac9f3410bc63644625b3b3e9e96c963afd7910ae0697792db57813ee79a6",
"nativeVersion": "0.14"
},
"dependencies": {
"settings": [
{
"id": {
"group": "com.googlecode.javaewah",
"name": "JavaEWAH",
"version": "1.1.6",
"type": "jar",
"extension": "jar"
},
"name": "JavaEWAH-1.1.6.jar",
"path": "com/googlecode/javaewah/JavaEWAH/1.1.6",
"urls": [
"https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar"
],
"sha256": "f78d44a1e3877f1ce748b4a85df5171e5e8e9a5c3c6f63bb9003db6f84cce952"
},
{
"id": {
"group": "com.googlecode.javaewah",
"name": "JavaEWAH",
"version": "1.1.6",
"type": "pom",
"extension": "pom"
},
"name": "JavaEWAH-1.1.6.pom",
"path": "com/googlecode/javaewah/JavaEWAH/1.1.6",
"urls": [
"https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.pom"
],
"sha256": "7f4ff919b1ee17bf3776e058a3f20e6173db23a5e44cf2d107ec7570c186abf0"
},
{
"id": {
"group": "com.jcraft",
"name": "jsch",
"version": "0.1.54",
"type": "jar",
"extension": "jar"
},
"name": "jsch-0.1.54.jar",
"path": "com/jcraft/jsch/0.1.54",
"urls": [
"https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar"
],
"sha256": "92eb273a3316762478fdd4fe03a0ce1842c56f496c9c12fe1235db80450e1fdb"
},
{
"id": {
"group": "com.jcraft",
"name": "jsch",
"version": "0.1.54",
"type": "pom",
"extension": "pom"
},
"name": "jsch-0.1.54.pom",
"path": "com/jcraft/jsch/0.1.54",
"urls": [
"https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.pom"
],
"sha256": "ab8f512039be7f6ae20e18e743b4a9d8a20958494431917da58ae5aaef8a3478"
},
{
"id": {
"group": "commons-codec",
"name": "commons-codec",
"version": "1.6",
"type": "jar",
"extension": "jar"
},
"name": "commons-codec-1.6.jar",
"path": "commons-codec/commons-codec/1.6",
"urls": [
"https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar"
],
"sha256": "54b34e941b8e1414bd3e40d736efd3481772dc26db3296f6aa45cec9f6203d86"
},
{
"id": {
"group": "commons-codec",
"name": "commons-codec",
"version": "1.6",
"type": "pom",
"extension": "pom"
},
"name": "commons-codec-1.6.pom",
"path": "commons-codec/commons-codec/1.6",
"urls": [
"https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom"
],
"sha256": "a06e35d3fff3a6b813d94894ebf3e498f9540c864c5b39ae783907e3a6c72889"
},
{
"id": {
"group": "commons-logging",
"name": "commons-logging",
"version": "1.1.3",
"type": "jar",
"extension": "jar"
},
"name": "commons-logging-1.1.3.jar",
"path": "commons-logging/commons-logging/1.1.3",
"urls": [
"https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar"
],
"sha256": "70903f6fc82e9908c8da9f20443f61d90f0870a312642991fe8462a0b9391784"
},
{
"id": {
"group": "commons-logging",
"name": "commons-logging",
"version": "1.1.3",
"type": "pom",
"extension": "pom"
},
"name": "commons-logging-1.1.3.pom",
"path": "commons-logging/commons-logging/1.1.3",
"urls": [
"https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.pom"
],
"sha256": "3250ac3ac6bd60ed0631f5cd0335032b2993d63e405a6ae0555d27a7e4865849"
},
{
"id": {
"group": "gradle.plugin.net.vivin",
"name": "gradle-semantic-build-versioning",
"version": "4.0.0",
"type": "jar",
"extension": "jar"
},
"name": "gradle-semantic-build-versioning-4.0.0.jar",
"path": "gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0",
"urls": [
"https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.jar"
],
"sha256": "5138e67ce8e019437800b93c9f6f9d0fcbebefadc96fbc4ebc0975c99a261ef8"
},
{
"id": {
"group": "gradle.plugin.net.vivin",
"name": "gradle-semantic-build-versioning",
"version": "4.0.0",
"type": "pom",
"extension": "pom"
},
"name": "gradle-semantic-build-versioning-4.0.0.pom",
"path": "gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0",
"urls": [
"https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.pom"
],
"sha256": "4f2828741607ed102d95eb5f189d496c7840ed463acea89f1e51a60567714ef7"
},
{
"id": {
"group": "org.apache",
"name": "apache",
"version": "9",
"type": "pom",
"extension": "pom"
},
"name": "apache-9.pom",
"path": "org/apache/apache/9",
"urls": [
"https://plugins.gradle.org/m2/org/apache/apache/9/apache-9.pom"
],
"sha256": "4946e60a547c8eda69f3bc23c5b6f0dadcf8469ea49b1d1da7de34aecfcf18dd"
},
{
"id": {
"group": "org.apache",
"name": "apache",
"version": "13",
"type": "pom",
"extension": "pom"
},
"name": "apache-13.pom",
"path": "org/apache/apache/13",
"urls": [
"https://plugins.gradle.org/m2/org/apache/apache/13/apache-13.pom"
],
"sha256": "ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d"
},
{
"id": {
"group": "org.apache.commons",
"name": "commons-parent",
"version": "22",
"type": "pom",
"extension": "pom"
},
"name": "commons-parent-22.pom",
"path": "org/apache/commons/commons-parent/22",
"urls": [
"https://plugins.gradle.org/m2/org/apache/commons/commons-parent/22/commons-parent-22.pom"
],
"sha256": "fb8c5e55e30a7addb4ff210858a0e8d2494ed6757bbe19012da99d51586c3cbb"
},
{
"id": {
"group": "org.apache.commons",
"name": "commons-parent",
"version": "28",
"type": "pom",
"extension": "pom"
},
"name": "commons-parent-28.pom",
"path": "org/apache/commons/commons-parent/28",
"urls": [
"https://plugins.gradle.org/m2/org/apache/commons/commons-parent/28/commons-parent-28.pom"
],
"sha256": "14733a68e8b120b69de60cd96d222146dcf32f03c1c6cc6a750b1269bafe86c7"
},
{
"id": {
"group": "org.apache.httpcomponents",
"name": "httpclient",
"version": "4.3.6",
"type": "jar",
"extension": "jar"
},
"name": "httpclient-4.3.6.jar",
"path": "org/apache/httpcomponents/httpclient/4.3.6",
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar"
],
"sha256": "79838d9eaef73d4f852c63a480830c3a2d4b590f0ab3ae815a489463e4714004"
},
{
"id": {
"group": "org.apache.httpcomponents",
"name": "httpclient",
"version": "4.3.6",
"type": "pom",
"extension": "pom"
},
"name": "httpclient-4.3.6.pom",
"path": "org/apache/httpcomponents/httpclient/4.3.6",
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.pom"
],
"sha256": "d02634f6131e914961c02aa836711ebac72704b27e26c5bd223bbad89b1b64c3"
},
{
"id": {
"group": "org.apache.httpcomponents",
"name": "httpcomponents-client",
"version": "4.3.6",
"type": "pom",
"extension": "pom"
},
"name": "httpcomponents-client-4.3.6.pom",
"path": "org/apache/httpcomponents/httpcomponents-client/4.3.6",
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-client/4.3.6/httpcomponents-client-4.3.6.pom"
],
"sha256": "4ada2827b496339826891c7c81dceba647029de6fc1888b16b3cab5650abcc63"
},
{
"id": {
"group": "org.apache.httpcomponents",
"name": "httpcomponents-core",
"version": "4.3.3",
"type": "pom",
"extension": "pom"
},
"name": "httpcomponents-core-4.3.3.pom",
"path": "org/apache/httpcomponents/httpcomponents-core/4.3.3",
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-core/4.3.3/httpcomponents-core-4.3.3.pom"
],
"sha256": "c16e2fc0d49ba7a02cef5b5e2600585a9f673553328a6f9e58f24296df1dd031"
},
{
"id": {
"group": "org.apache.httpcomponents",
"name": "httpcore",
"version": "4.3.3",
"type": "jar",
"extension": "jar"
},
"name": "httpcore-4.3.3.jar",
"path": "org/apache/httpcomponents/httpcore/4.3.3",
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar"
],
"sha256": "5285de80af1651c489313b91a9f40c65a4cdcb6b3bde716fcc028d16869a5a93"
},
{
"id": {
"group": "org.apache.httpcomponents",
"name": "httpcore",
"version": "4.3.3",
"type": "pom",
"extension": "pom"
},
"name": "httpcore-4.3.3.pom",
"path": "org/apache/httpcomponents/httpcore/4.3.3",
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.pom"
],
"sha256": "b427f7cf67c75a4e3f9e2108d35bf45303573c145ec778fcadcffacef17a1264"
},
{
"id": {
"group": "org.apache.httpcomponents",
"name": "project",
"version": "7",
"type": "pom",
"extension": "pom"
},
"name": "project-7.pom",
"path": "org/apache/httpcomponents/project/7",
"urls": [
"https://plugins.gradle.org/m2/org/apache/httpcomponents/project/7/project-7.pom"
],
"sha256": "3d6eba428555a558de046b5d76eacc1f5a54b4f5f20b84d636ed7aff18aa48c3"
},
{
"id": {
"group": "org.eclipse.jgit",
"name": "org.eclipse.jgit",
"version": "4.8.0.201706111038-r",
"type": "jar",
"extension": "jar"
},
"name": "org.eclipse.jgit-4.8.0.201706111038-r.jar",
"path": "org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r",
"urls": [
"https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.jar"
],
"sha256": "49d912e8d5cce0dd08dca3d390189db8692a8f7e3363cdbbe182581462000aba"
},
{
"id": {
"group": "org.eclipse.jgit",
"name": "org.eclipse.jgit",
"version": "4.8.0.201706111038-r",
"type": "pom",
"extension": "pom"
},
"name": "org.eclipse.jgit-4.8.0.201706111038-r.pom",
"path": "org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r",
"urls": [
"https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.pom"
],
"sha256": "a556a9f5adfc6af49b2a12e72dc3cd7e43db8fdc216c0f35885972a2f5ada27d"
},
{
"id": {
"group": "org.eclipse.jgit",
"name": "org.eclipse.jgit-parent",
"version": "4.8.0.201706111038-r",
"type": "pom",
"extension": "pom"
},
"name": "org.eclipse.jgit-parent-4.8.0.201706111038-r.pom",
"path": "org/eclipse/jgit/org.eclipse.jgit-parent/4.8.0.201706111038-r",
"urls": [
"https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit-parent/4.8.0.201706111038-r/org.eclipse.jgit-parent-4.8.0.201706111038-r.pom"
],
"sha256": "396a4cc894206873ff107d066a996252b0b47f585b88cf57fc3b31e93d492878"
},
{
"id": {
"group": "org.slf4j",
"name": "slf4j-api",
"version": "1.7.2",
"type": "jar",
"extension": "jar"
},
"name": "slf4j-api-1.7.2.jar",
"path": "org/slf4j/slf4j-api/1.7.2",
"urls": [
"https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar"
],
"sha256": "3bae789b401333b2a1d1603b7fa573e19908628191707203f6eb708cdee2c052"
},
{
"id": {
"group": "org.slf4j",
"name": "slf4j-api",
"version": "1.7.2",
"type": "pom",
"extension": "pom"
},
"name": "slf4j-api-1.7.2.pom",
"path": "org/slf4j/slf4j-api/1.7.2",
"urls": [
"https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom"
],
"sha256": "2eaca71afe0a1516f4abd8e9ff907838d268f38c81c3a542cce8d7f3b87c5d4c"
},
{
"id": {
"group": "org.slf4j",
"name": "slf4j-parent",
"version": "1.7.2",
"type": "pom",
"extension": "pom"
},
"name": "slf4j-parent-1.7.2.pom",
"path": "org/slf4j/slf4j-parent/1.7.2",
"urls": [
"https://plugins.gradle.org/m2/org/slf4j/slf4j-parent/1.7.2/slf4j-parent-1.7.2.pom"
],
"sha256": "1d8e084a6f2384ade42685332b52a0ece090478641dc14c0fa8c52e1e2984425"
},
{
"id": {
"group": "org.sonatype.oss",
"name": "oss-parent",
"version": "5",
"type": "pom",
"extension": "pom"
},
"name": "oss-parent-5.pom",
"path": "org/sonatype/oss/oss-parent/5",
"urls": [
"https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom"
],
"sha256": "1678d4120a585d8a630131aeec4c524d928398583b7eab616ee7d5a87f520d3d"
},
{
"id": {
"group": "org.sonatype.oss",
"name": "oss-parent",
"version": "6",
"type": "pom",
"extension": "pom"
},
"name": "oss-parent-6.pom",
"path": "org/sonatype/oss/oss-parent/6",
"urls": [
"https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/6/oss-parent-6.pom"
],
"sha256": "b4306d13e8f5392458a1b30866f1cff161b3d2e6999a88d059eea3932c8a8499"
}
],
"plugin": [],
"buildscript": [],
"project": []
}
}
}

View File

@@ -1,318 +0,0 @@
# This file is generated by gradle2nix.
#
# Example usage (e.g. in default.nix):
#
# with (import <nixpkgs> {});
# let
# buildGradle = callPackage ./gradle-env.nix {};
# in
# buildGradle {
# envSpec = ./gradle-env.json;
#
# src = ./.;
#
# gradleFlags = [ "installDist" ];
#
# installPhase = ''
# mkdir -p $out
# cp -r app/build/install/myproject $out
# '';
# }
{ stdenv, buildEnv, fetchurl, gradleGen, writeText, writeTextDir }:
{ envSpec
, pname ? null
, version ? null
, enableParallelBuilding ? true
, gradleFlags ? [ "build" ]
, gradlePackage ? null
, enableDebug ? false
, ... } @ args:
let
inherit (builtins)
attrValues concatStringsSep filter fromJSON match replaceStrings sort;
inherit (stdenv.lib)
assertMsg concatMapStringsSep groupBy' hasSuffix last mapAttrs
mapAttrsToList optionalString readFile removeSuffix unique versionAtLeast
versionOlder;
mkDep = depSpec: stdenv.mkDerivation {
inherit (depSpec) name;
src = fetchurl {
inherit (depSpec) urls sha256;
};
phases = "installPhase";
installPhase = ''
mkdir -p $out/${depSpec.path}
ln -s $src $out/${depSpec.path}/${depSpec.name}
'';
};
mkModuleMetadata = deps:
let
ids = filter
(id: id.type == "pom")
(map (dep: dep.id) deps);
modules = groupBy'
(meta: id:
let
isNewer = versionOlder meta.latest id.version;
isNewerRelease =
!(hasSuffix "-SNAPSHOT" id.version) &&
versionOlder meta.release id.version;
in {
groupId = id.group;
artifactId = id.name;
latest = if isNewer then id.version else meta.latest;
release = if isNewerRelease then id.version else meta.release;
versions = meta.versions ++ [id.version];
}
)
{
latest = "";
release = "";
versions = [];
}
(id: "${replaceStrings ["."] ["/"] id.group}/${id.name}/maven-metadata.xml")
ids;
in
attrValues (mapAttrs (path: meta:
let
versions' = sort versionOlder (unique meta.versions);
in
with meta; writeTextDir path ''
<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1">
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<versioning>
${optionalString (latest != "") "<latest>${latest}</latest>"}
${optionalString (release != "") "<release>${release}</release>"}
<versions>
${concatMapStringsSep "\n " (v: "<version>${v}</version>") versions'}
</versions>
</versioning>
</metadata>
''
) modules);
mkSnapshotMetadata = deps:
let
snapshotDeps = filter (dep: dep ? build && dep ? timestamp) deps;
modules = groupBy'
(meta: dep:
let
id = dep.id;
isNewer = dep.build > meta.buildNumber;
# Timestamp values can be bogus, e.g. jitpack.io
updated = if (match "[0-9]{8}\.[0-9]{6}" dep.timestamp) != null
then replaceStrings ["."] [""] dep.timestamp
else "";
in {
groupId = id.group;
artifactId = id.name;
version = id.version;
timestamp = if isNewer then dep.timestamp else meta.timestamp;
buildNumber = if isNewer then dep.build else meta.buildNumber;
lastUpdated = if isNewer then updated else meta.lastUpdated;
versions = meta.versions or [] ++ [{
classifier = id.classifier or "";
extension = id.extension;
value = "${removeSuffix "-SNAPSHOT" id.version}-${dep.timestamp}-${toString dep.build}";
updated = updated;
}];
}
)
{
timestamp = "";
buildNumber = -1;
lastUpdated = "";
}
(dep: "${replaceStrings ["."] ["/"] dep.id.group}/${dep.id.name}/${dep.id.version}/maven-metadata.xml")
snapshotDeps;
mkSnapshotVersion = version: ''
<snapshotVersion>
${optionalString (version.classifier != "") "<classifier>${version.classifier}</classifier>"}
<extension>${version.extension}</extension>
<value>${version.value}</value>
${optionalString (version.updated != "") "<updated>${version.updated}</updated>"}
</snapshotVersion>
'';
in
attrValues (mapAttrs (path: meta:
with meta; writeTextDir path ''
<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1">
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<versioning>
<snapshot>
${optionalString (timestamp != "") "<timestamp>${timestamp}</timestamp>"}
${optionalString (buildNumber != -1) "<buildNumber>${toString buildNumber}</buildNumber>"}
</snapshot>
${optionalString (lastUpdated != "") "<lastUpdated>${lastUpdated}</lastUpdated>"}
<snapshotVersions>
${concatMapStringsSep "\n " mkSnapshotVersion versions}
</snapshotVersions>
</versioning>
</metadata>
''
) modules);
mkRepo = project: type: deps: buildEnv {
name = "${project}-gradle-${type}-env";
paths = map mkDep deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps;
};
mkInitScript = projectSpec: gradle:
let
repos = mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies;
hasDependencies = mapAttrs (type: deps: deps != []) projectSpec.dependencies;
in
assert (assertMsg (hasDependencies.settings -> versionAtLeast gradle.version "6.0") ''
Project `${projectSpec.name}' has settings script dependencies, such as settings
plugins, which are not supported by gradle2nix for Gradle versions prior to 6.0.
Potential remedies:
- Pass `--gradle-version=<version>' to the gradle2nix command.
- Patch the `settings.gradle[.kts]' file to remove script dependencies.
'');
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()
}
}
}
${optionalString (hasDependencies.settings && (versionAtLeast gradle.version "6.0")) ''
gradle.beforeSettings {
offlineRepo(it.buildscript.repositories, "settings", "${repos.settings}")
}
''}
${optionalString (hasDependencies.plugin) ''
gradle.settingsEvaluated {
offlineRepo(it.pluginManagement.repositories, "plugin", "${repos.plugin}")
}
''}
${optionalString (hasDependencies.buildscript) ''
gradle.projectsLoaded {
allprojects {
buildscript {
offlineRepo(repositories, "buildscript", "${repos.buildscript}")
}
}
}
''}
${optionalString (hasDependencies.project) ''
gradle.projectsLoaded {
allprojects {
offlineRepo(repositories, "project", "${repos.project}")
}
}
''}
'';
mkGradle = gradleSpec:
gradleGen.gradleGen {
inherit (gradleSpec) nativeVersion;
name = "gradle-${gradleSpec.version}-${gradleSpec.type}";
src = fetchurl {
inherit (gradleSpec) url sha256;
};
} // {
inherit (gradleSpec) version;
};
mkProjectEnv = projectSpec: rec {
inherit (projectSpec) name path version;
gradle = args.gradlePackage or mkGradle projectSpec.gradle;
initScript = mkInitScript projectSpec gradle;
};
gradleEnv = mapAttrs
(_: p: mkProjectEnv p)
(fromJSON (readFile envSpec));
projectEnv = gradleEnv."";
pname = args.pname or projectEnv.name;
version = args.version or projectEnv.version;
buildProject = env: flags: ''
gradle --offline --no-daemon --no-build-cache \
--info --full-stacktrace --warning-mode=all \
${optionalString enableParallelBuilding "--parallel"} \
${optionalString enableDebug "-Dorg.gradle.debug=true"} \
--init-script ${env.initScript} \
${optionalString (env.path != "") ''-p "${env.path}"''} \
${concatStringsSep " " flags}
'';
buildIncludedProjects =
concatStringsSep "\n" (mapAttrsToList
(_: env: buildProject env [ "build" ])
(removeAttrs gradleEnv [ "" ]));
buildRootProject = buildProject projectEnv gradleFlags;
in stdenv.mkDerivation (args // {
inherit pname version;
nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ projectEnv.gradle ];
buildPhase = args.buildPhase or ''
runHook preBuild
(
set -x
# use the init script here
TMPHOME=$(mktemp -d)
mkdir -p $TMPHOME/init.d
cp ${projectEnv.initScript} $TMPHOME/init.d
export "GRADLE_USER_HOME=$TMPHOME"
${buildIncludedProjects}
${buildRootProject}
)
runHook postBuild
'';
dontStrip = true;
})

View File

@@ -1 +0,0 @@
startingVersion = '1.0.0'

View File

@@ -1,7 +0,0 @@
plugins {
id "org.jetbrains.kotlin.jvm" version "1.3.50"
}
repositories {
jcenter()
}

View File

@@ -1,7 +0,0 @@
plugins {
kotlin("jvm") version "1.3.50"
}
repositories {
jcenter()
}

View File

@@ -0,0 +1,14 @@
plugins {
java
}
repositories {
maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
isAllowInsecureProtocol = true
}
}
dependencies {
implementation("org.jetbrains:dummy:0.1.2")
}

View File

@@ -3,7 +3,6 @@ plugins {
}
repositories {
jcenter()
mavenCentral()
}

View File

@@ -0,0 +1 @@
// Intentionally left empty

View File

@@ -0,0 +1,30 @@
val kotlinVersion = "1.6.21"
val spekVersion = "2.0.9"
plugins {
application
kotlin("jvm") version "1.6.21"
}
dependencies {
compileOnly(kotlin("stdlib"))
implementation("com.natpryce:konfig:1.6.10.0")
implementation("com.github.pengrad:java-telegram-bot-api:4.6.0")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3")
implementation("org.jetbrains.exposed:exposed-core:0.50.1")
implementation("org.jetbrains.exposed", "exposed-dao", "0.50.1")
implementation("org.jetbrains.exposed", "exposed-jdbc", "0.50.1")
implementation("org.jetbrains.exposed", "exposed-jodatime", "0.50.1")
implementation("io.javalin:javalin:3.7.0")
implementation("org.slf4j:slf4j-simple:1.8.0-beta4")
implementation(group = "org.xerial", name = "sqlite-jdbc", version = "3.30.1")
implementation("org.postgresql:postgresql:42.2.2")
implementation("com.fasterxml.jackson.core:jackson-databind:2.10.1")
testImplementation("org.spekframework.spek2:spek-dsl-jvm:$spekVersion")
testRuntimeOnly("org.spekframework.spek2:spek-runner-junit5:$spekVersion")
testCompileOnly("com.winterbe:expekt:0.5.0")
}
repositories {
mavenCentral()
}

View File

@@ -0,0 +1 @@
// Intentionally left empty

View File

@@ -0,0 +1,4 @@
plugins {
`java-library`
id("com.example.apply-plugin-publish")
}

View File

@@ -0,0 +1,20 @@
plugins {
`kotlin-dsl`
}
repositories {
gradlePluginPortal()
}
dependencies {
implementation("com.gradle.publish:plugin-publish-plugin:1.2.1")
}
gradlePlugin {
plugins {
register("apply-plugin-publish") {
id = "com.example.apply-plugin-publish"
implementationClass = "com.example.ApplyPluginPublishPlugin"
}
}
}

View File

@@ -0,0 +1 @@
// Intentionally left empty

View File

@@ -0,0 +1,10 @@
package com.example
import org.gradle.api.Plugin
import org.gradle.api.Project
open class ApplyPluginPublishPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.pluginManager.apply("com.gradle.plugin-publish")
}
}

View File

@@ -0,0 +1 @@
// Intentionally left empty

View File

@@ -0,0 +1 @@
// Intentionally left empty

View File

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

View File

@@ -0,0 +1 @@
// Intentionally left empty

View File

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

View File

@@ -0,0 +1,15 @@
plugins {
java
}
repositories {
maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
isAllowInsecureProtocol = true
}
}
dependencies {
"implementation"("org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT")
}

View File

@@ -0,0 +1 @@
// Intentionally left empty

View File

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

View File

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

View File

@@ -0,0 +1,15 @@
plugins {
java
}
repositories {
maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
isAllowInsecureProtocol = true
}
}
dependencies {
"implementation"("org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT")
}

View File

@@ -0,0 +1 @@
// Intentionally left empty

View File

@@ -0,0 +1,13 @@
apply plugin: 'java'
repositories {
maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
allowInsecureProtocol true
}
}
dependencies {
implementation 'org.test.included:included-child'
implementation 'org.apache:test:1.0.0'
}

View File

@@ -0,0 +1,14 @@
apply plugin: 'java-library'
group = 'org.test.included'
version = '1.0'
repositories {
maven {
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
allowInsecureProtocol true
}
}
dependencies {
implementation 'org.apache:foo:1.0.0'
}

View File

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

View File

@@ -0,0 +1 @@
includeBuild 'included-child'

View File

@@ -10,5 +10,3 @@ buildscript {
}
rootProject.name = "settings-buildscript"
//apply plugin: 'net.vivin.gradle-semantic-build-versioning'

View File

@@ -5,8 +5,7 @@ plugins {
repositories {
ivy {
url = uri("https://asset.opendof.org")
layout("pattern") {
this as IvyPatternRepositoryLayout
patternLayout {
ivy("ivy2/[organisation]/[module]/[revision]/ivy(.[platform]).xml")
artifact("artifact/[organisation]/[module]/[revision](/[platform])(/[type]s)/[artifact]-[revision](-[classifier]).[ext]")
}

View File

@@ -0,0 +1 @@
// Intentionally left empty

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