70 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
Tad Fisher
716f137343 flake: init 2020-12-09 17:54:04 -08:00
Tad Fisher
f047221f5f Fix artifact hashes 2020-12-09 13:26:13 -08:00
Tad Fisher
6faed26b31 Merge pull request #29 from tadfisher/extraInit
Add extraInit and buildJdk args
2020-12-02 00:59:11 -08:00
Tad Fisher
7c02e63afa Add extraInit and buildJdk args 2020-12-01 16:44:44 -08:00
Tad Fisher
fd6a6f4693 Resolve and apply settings buildscript dependencies 2020-11-24 16:35:48 -08:00
Tad Fisher
a99b5f40e3 Ignore Gradle cache when hashing metadata artifacts 2020-11-23 14:29:14 -08:00
Tad Fisher
beb157cf18 Update build; improve caching; improve tests 2020-11-22 19:32:18 -08:00
Tad Fisher
2ad217b878 Merge pull request #24 from Mic92/fix-docs
Merge lenient configs
2020-10-23 00:16:10 -07:00
Jörg Thalheim
e05b6382ca gradle-env: fix example usage 2020-10-23 09:01:09 +02:00
Tad Fisher
b88ee98da2 Merge pull request #19 from eyJhb/buildscript-fix
fix init file not working on buildSrc
2020-08-06 14:00:49 -07:00
eyjhb
59e8130e64 fix init file not working on buildSrc 2020-08-01 13:41:51 +02:00
Tad Fisher
dd5d60e835 Fix dependency resolution for plugins in buildSrc 2020-04-27 17:42:58 -07:00
Tad Fisher
23cb225ccf Fix native-platform jar detection 2020-04-27 13:09:41 -07:00
Tad Fisher
c949f19891 Bump dependencies 2020-04-27 12:45:06 -07:00
Tad Fisher
c3c4079566 Version 1.0.0-rc2 2020-02-20 10:14:01 -08:00
Tad Fisher
baa58da5a1 Exclude local repositories from dependency resolution
Fixes https://github.com/tadfisher/gradle2nix/issues/8
2020-02-19 12:57:29 -08:00
253 changed files with 9946 additions and 7022 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 Based on substantial portions of the GitHub Dependency Graph Gradle Plugin,
a copy of this software and associated documentation files (the Copyright © Gradle, Inc and licensed under the Apache License 2.0.
"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:
The above copyright notice and this permission notice shall be See LICENSE for the full text of the Apache License 2.0.
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.

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]] [[./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? ** 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 accepts inputs (source code, configuration, etc) and produces an
output (binaries, a Java JAR, documentation, really anything). 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 specify your inputs precisely, and take care not to introduce
impurities—such as files retrieved over a network without tracking impurities—such as files retrieved over a network without tracking
their content—you will receive, byte-for-byte, the exact output as their content—you will receive, byte-for-byte, the exact output as
@@ -29,38 +48,40 @@ inputs, including:
- Environment variables and command-line options - Environment variables and command-line options
- Artifacts cached on the system hosting the build - Artifacts cached on the system hosting the build
=gradle2nix= helps to solve this problem by leveraging Nix to control =gradle2nix= helps to solve this problem by leveraging Nix to
the most common inputs to a Gradle build. When run on a project, it control the most common inputs to a Gradle build. When run on a
will record all dependencies for both the build environment (including project, it will record all dependencies for both the build
=plugins= and =buildscript= blocks) and the project, and provide a Nix environment (including =plugins= and =buildscript= blocks) and the
expression to run the build given these dependencies. The build itself project, and provide a Nix expression to run the build given these
is then run in a sandbox, where only content-tracked network requests dependencies. The build itself is then run in a sandbox, where only
are allowed to fetch dependencies, and a local Maven repository is content-tracked network requests are allowed to fetch dependencies,
created on-the-fly to host the dependency artifacts somewhere Gradle and a local Maven repository is created on-the-fly to host the
can resolve them without a network. dependency artifacts somewhere Gradle can resolve them without a
network.
This tool is useful for both development and packaging. You can use This tool is useful for both development and packaging. You can use
=gradle2nix= to: =gradle2nix= to:
- Create isolated and reproducible development environments that work - Create isolated and reproducible development environments that
anywhere Nix itself can run; work anywhere Nix itself can run.
- Reduce or eliminate flakiness and maintenance headaches from CI/CD - Reduce or eliminate flakiness and maintenance headaches from CI/CD
pipelines pipelines.
- Distribute a recipe which can reliably build a Gradle project in - 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 ** Installation
A [[./default.nix][Nix expression]] (generated by =gradle2nix= itself) is provided for A [[./gradle.nix][Nix expression]] (generated by =gradle2nix=
convenience. The following expression will fetch and build the latest itself) is provided for convenience. The following expression will
version of this package: fetch and build the latest version of this package:
#+begin_src nix #+begin_src nix
import (fetchTarball "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz") {} import (fetchTarball "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz") {}
#+end_src #+end_src
If this expression is in, say, =gradle2nix.nix=, =gradle2nix= can be 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 #+begin_example
nix build -f gradle2nix.nix nix build -f gradle2nix.nix
@@ -80,77 +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 =gradle2nix= is not yet packaged in =nixpkgs= itself, but work is
[[https://github.com/NixOS/nixpkgs/pull/77422][in progress]]. [[https://github.com/NixOS/nixpkgs/pull/77422][in progress]].
The [[./nix/build-gradle-package.nix][buildGradlePackage]] function
is provided via the =gradle2nix.passthru.buildGradlePackage=
attribute.
#+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 ** Usage
#+begin_example #+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: Options:
-g, --gradle-version VERSION Use a specific Gradle version -t, --task=<task> Gradle tasks to run (default: [resolveAllArtifacts])
-a, --gradle-args ARGS Extra arguments to pass to Gradle -a, --artifacts=<artifacts> Comma-separated list of artifacts to download (artifacts:
-c, --configuration NAME Add a configuration to resolve (default: doxygen,javadoc,samples,sources,usermanual) (default: [])
all configurations) -p, --project=<path> Path to the project root (default: Current directory)
-i, --include DIR Add an additional project to include -o, --out-dir=<dir> Path to write generated files (default: <project>)
-p, --project PATH Only resolve these subproject paths, e.g. -l, --lock-file=<filename> Name of the generated lock file (default: gradle.lock)
':', or ':sub:project' (default: all -j, --gradle-jdk=<dir> JDK home to use for launching Gradle (e.g. `nix eval --raw
projects) nixpkgs#openjdk.home`)
-o, --out-dir DIR Path to write generated files (default: --log=(debug|info|warn|error) Print messages with this priority or higher (default: info)
PROJECT-DIR) --dump-events Dump Gradle event logs to the output directory
-e, --env FILENAME Prefix for environment files (.json and --stacktrace Print a stack trace on error
.nix) (default: gradle-env)
-b, --build-src / -nb, --no-build-src
Include buildSrc project (default: true)
-q, --quiet Disable logging
-h, --help Show this message and exit -h, --help Show this message and exit
Arguments: Arguments:
PROJECT-DIR Path to the project root (default: .) <args> Extra arguments to pass to Gradle
#+end_example #+end_example
Simply running =gradle2nix= in the root directory of a project should Simply running =gradle2nix= in the root directory of a project
be enough for most projects. This will produce two files, by default should be enough for most projects. This will produce a lock file,
called =gradle-env.json= and =gradle-env.nix=, which contain the by default called =gradle.lock=, which contains the pinned
pinned dependencies for the project and a standard build expression dependencies for the project. An example of a build expression using
which can be imported or called by other Nix expressions. An example this lock file can be found in this project's
of such an expression can be found in this project's [[./default.nix][default.nix]]. [[./default.nix][default.nix]].
*** Specifying the Gradle version *** For packagers
By default, if the project has configured the Gradle wrapper, that If you're creating a Nix package for an existing Gradle project, you
version will be detected and pinned; otherwise, the version of Gradle can reduce the number of pinned dependencies by passing one or more
installed on your system will be pinned. You can override this with =--task= arguments. This will only pin the dependencies that were
the =--gradle-version= argument, which also avoids the need to have resolved as part of the build, instead of the default behavior where
Gradle installed. all possible dependencies are pinned.
For example, if the package produces its build output via the
=:app:installDist= task, use the following:
#+begin_example #+begin_example
gradle2nix -g 6.1 gradle2nix -t :app:installDist
#+end_example #+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 *** Specifying the Gradle installation
build]], add the =--project= option for each project. For example, in a
project where you only want to build the subprojects =:app= and By default, if the project has configured the Gradle wrapper, it will
=:widget=: 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 #+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 #+end_example
Any [[https://docs.gradle.org/current/userguide/declaring_dependencies.html#sub:project_dependencies][project dependencies]] will be also be included when pinning ** Reference
dependency artifacts.
*** =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 ** Contributing
Bug reports and feature requests are encouraged. 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 Code contributions are also encouraged. Please review the test cases
in the [[./fixtures][fixtures]] directory and create a new one to reproduce any fixes in the [[./fixtures][fixtures]] directory and create a new one to
or test new features. See the [[./plugin/src/compatTest/kotlin/org/nixos/gradle2nix][existing compatibility tests]] for reproduce any fixes or test new features. See the
examples of testing with these fixtures. [[./app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt][existing
tests]] for examples of testing with these fixtures.
** License ** License
=gradle2nix= is licensed under the [[./COPYING][MIT License]]. =gradle2nix= is licensed under the [[./COPYING][Apache License 2.0]].

View File

@@ -1,53 +1,103 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins { plugins {
kotlin("jvm") id("org.jetbrains.kotlin.jvm")
kotlin("kapt") id("org.jetbrains.kotlin.plugin.serialization")
application application
} }
configurations.register("share")
dependencies { dependencies {
implementation(project(":model")) implementation(project(":model"))
implementation(kotlin("stdlib-jdk8")) implementation(libs.clikt)
implementation(kotlin("reflect")) implementation(libs.gradle.toolingApi)
implementation("org.gradle:gradle-tooling-api:${gradle.gradleVersion}") implementation(libs.kotlin.stdlib)
implementation("com.github.ajalt:clikt:latest.release") implementation(libs.kotlinx.coroutines.core)
implementation("org.slf4j:slf4j-api:latest.release") implementation(libs.serialization.json)
runtimeOnly("org.slf4j:slf4j-simple:latest.release") runtimeOnly(libs.slf4j.simple)
implementation("com.squareup.moshi:moshi-adapters:latest.release")
implementation("com.squareup.moshi:moshi-kotlin:latest.release") "share"(project(":plugin:base", configuration = "shadow"))
kapt("com.squareup.moshi:moshi-kotlin-codegen:latest.release") "share"(project(":plugin:gradle80", configuration = "shadow"))
implementation("com.squareup.okio:okio:latest.release") "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 { application {
mainClassName = "org.nixos.gradle2nix.MainKt" mainClass.set("org.nixos.gradle2nix.MainKt")
applicationName = "gradle2nix" applicationName = "gradle2nix"
applicationDefaultJvmArgs += "-Dorg.nixos.gradle2nix.share=@APP_HOME@/share" applicationDefaultJvmArgs =
listOf(
"-Dorg.nixos.gradle2nix.share=@APP_HOME@/share",
"-Dslf4j.internal.verbosity=ERROR",
)
applicationDistribution applicationDistribution
.from(tasks.getByPath(":plugin:shadowJar")) .from(configurations.named("share"))
.into("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 {
test {
resources {
srcDir("$rootDir/fixtures")
}
}
}
val updateGolden = providers.gradleProperty("update-golden")
tasks { tasks {
(run) { (run) {
dependsOn(installDist) enabled = false
doFirst {
jvmArgs = listOf("-Dorg.nixos.gradle2nix.share=${installDist.get().destinationDir.resolve("share")}")
}
} }
startScripts { startScripts {
doLast { doLast {
unixScript.writeText(unixScript.readText().replace("@APP_HOME@", "\$APP_HOME")) unixScript.writeText(
windowsScript.writeText(windowsScript.readText().replace("@APP_HOME@", "%APP_HOME%")) unixScript.readText().replace("@APP_HOME@", "'\$APP_HOME'"),
)
windowsScript.writeText(
windowsScript.readText().replace("@APP_HOME@", "%APP_HOME%"),
)
} }
} }
withType<KotlinCompile> { // TODO Find out why this fails the configuration cache
kotlinOptions { test {
jvmTarget = "1.8" notCompatibleWithConfigurationCache("contains a Task reference")
dependsOn(installDist)
val shareDir = layout.dir(installDist.map { it.destinationDir.resolve("share") })
doFirst {
if (updateGolden.isPresent) {
systemProperty("org.nixos.gradle2nix.update-golden", "")
}
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")
} }
} }
} }

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,271 +0,0 @@
# This file is generated by gradle2nix.
#
# Example usage (e.g. in default.nix):
#
# with (import <nixpkgs> {});
# let
# buildGradle = callPackage ./gradleEnv.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)
filter sort replaceStrings attrValues match fromJSON
concatStringsSep;
inherit (stdenv.lib)
versionOlder unique mapAttrs last concatMapStringsSep removeSuffix
optionalString groupBy' readFile hasSuffix;
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:
let
repos = mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies;
in
writeText "init.gradle" ''
static def offlineRepo(RepositoryHandler repositories, String env, String path) {
repositories.clear()
repositories.maven {
name "Nix''${env.capitalize()}MavenOffline"
url path
metadataSources {
it.gradleMetadata()
it.mavenPom()
it.artifact()
}
}
repositories.ivy {
name "Nix''${env.capitalize()}IvyOffline"
url path
layout "maven"
metadataSources {
it.gradleMetadata()
it.ivyDescriptor()
it.artifact()
}
}
}
gradle.settingsEvaluated {
offlineRepo(it.pluginManagement.repositories, "plugin", "${repos.plugin}")
}
gradle.projectsLoaded {
allprojects {
buildscript {
offlineRepo(repositories, "buildscript", "${repos.buildscript}")
}
offlineRepo(repositories, "project", "${repos.project}")
}
}
'';
mkGradle = gradleSpec:
gradleGen.gradleGen {
inherit (gradleSpec) nativeVersion;
name = "gradle-${gradleSpec.version}-${gradleSpec.type}";
src = fetchurl {
inherit (gradleSpec) url sha256;
};
};
mkProjectEnv = projectSpec: {
inherit (projectSpec) name version;
initScript = mkInitScript projectSpec;
gradle = args.gradlePackage or mkGradle projectSpec.gradle;
};
gradleEnv = mapAttrs
(_: p: mkProjectEnv p)
(fromJSON (readFile envSpec));
projectEnv = gradleEnv."";
pname = args.pname or projectEnv.name;
version = args.version or projectEnv.version;
in stdenv.mkDerivation (args // {
inherit pname version;
nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ projectEnv.gradle ];
buildPhase = args.buildPhase or ''
runHook preBuild
(
set -x
env \
"GRADLE_USER_HOME=$(mktemp -d)" \
gradle --offline --no-daemon --no-build-cache \
--info --full-stacktrace --warning-mode=all \
${optionalString enableParallelBuilding "--parallel"} \
${optionalString enableDebug "-Dorg.gradle.debug=true"} \
--init-script ${projectEnv.initScript} \
${concatStringsSep " " gradleFlags}
)
runHook postBuild
'';
dontStrip = true;
})

View File

@@ -1,6 +1,16 @@
import org.gradle.util.GradleVersion
initscript { initscript {
dependencies { 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,49 +1,11 @@
package org.nixos.gradle2nix package org.nixos.gradle2nix
import com.squareup.moshi.JsonClass import kotlinx.serialization.Serializable
@JsonClass(generateAdapter = true) typealias Env = Map<String, Map<String, Artifact>>
data class NixGradleEnv(
val name: String, @Serializable
val version: String, data class Artifact internal constructor(
val path: String, val url: String,
val gradle: DefaultGradle, val hash: String,
val dependencies: Map<String, List<DefaultArtifact>>
) )
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(
"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,32 +1,113 @@
package org.nixos.gradle2nix package org.nixos.gradle2nix
import kotlinx.coroutines.suspendCancellableCoroutine
import org.gradle.tooling.GradleConnectionException
import org.gradle.tooling.GradleConnector import org.gradle.tooling.GradleConnector
import org.gradle.tooling.ProjectConnection import org.gradle.tooling.ProjectConnection
import org.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 = fun connect(
GradleConnector.newConnector() config: Config,
projectDir: File = config.projectDir,
): ProjectConnection =
GradleConnector
.newConnector()
.apply { .apply {
if (config.gradleVersion != null) { when (val source = config.gradleSource) {
useGradleVersion(config.gradleVersion) is GradleSource.Distribution -> useDistribution(source.uri)
is GradleSource.Path -> useInstallation(source.path)
GradleSource.Project -> useBuildDistribution()
is GradleSource.Wrapper -> useGradleVersion(source.version)
} }
} }.forProjectDirectory(projectDir)
.forProjectDirectory(config.projectDir)
.connect() .connect()
@Suppress("UnstableApiUsage") suspend fun ProjectConnection.buildModel(): GradleBuild =
fun ProjectConnection.getBuildModel(config: Config, path: String): DefaultBuild { suspendCancellableCoroutine { continuation ->
return model(Build::class.java).apply { val cancellationTokenSource = GradleConnector.newCancellationTokenSource()
addArguments(
"--init-script=$shareDir/init.gradle", continuation.invokeOnCancellation { cancellationTokenSource.cancel() }
"-Porg.nixos.gradle2nix.configurations=${config.configurations.joinToString(",")}",
"-Porg.nixos.gradle2nix.subprojects=${config.subprojects.joinToString(",")}" 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(
setColorOutput(true) 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) setStandardOutput(System.err)
setStandardError(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 package org.nixos.gradle2nix
import java.io.PrintStream import java.io.PrintStream
import kotlin.system.exitProcess
class Logger( class Logger(
val out: PrintStream = System.err, val out: PrintStream = System.err,
val verbose: Boolean val logLevel: LogLevel = LogLevel.WARN,
val stacktrace: Boolean = false,
) { ) {
fun debug(
val log: (String) -> Unit = { if (verbose) out.println(it) } message: String,
val warn: (String) -> Unit = { out.println("Warning: $it")} error: Throwable? = null,
val error: (String) -> Unit = { ) {
out.println("Error: $it") if (logLevel <= LogLevel.DEBUG) {
System.exit(1) out.println("[DEBUG] $message")
printError(error)
}
} }
operator fun component1() = log fun info(
operator fun component2() = warn message: String,
operator fun component3() = error 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,169 +1,257 @@
package org.nixos.gradle2nix package org.nixos.gradle2nix
import com.github.ajalt.clikt.completion.CompletionCandidates
import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.core.context import com.github.ajalt.clikt.core.context
import com.github.ajalt.clikt.output.CliktHelpFormatter import com.github.ajalt.clikt.core.main
import com.github.ajalt.clikt.parameters.arguments.ProcessedArgument import com.github.ajalt.clikt.output.MordantHelpFormatter
import com.github.ajalt.clikt.parameters.arguments.argument import com.github.ajalt.clikt.parameters.arguments.argument
import com.github.ajalt.clikt.parameters.arguments.convert import com.github.ajalt.clikt.parameters.arguments.multiple
import com.github.ajalt.clikt.parameters.arguments.default 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.default
import com.github.ajalt.clikt.parameters.options.defaultLazy
import com.github.ajalt.clikt.parameters.options.flag 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.option
import com.github.ajalt.clikt.parameters.options.split import com.github.ajalt.clikt.parameters.options.split
import com.github.ajalt.clikt.parameters.options.validate import com.github.ajalt.clikt.parameters.types.enum
import com.github.ajalt.clikt.parameters.types.file import com.github.ajalt.clikt.parameters.types.file
import com.squareup.moshi.Moshi import kotlinx.coroutines.runBlocking
import com.squareup.moshi.Types import kotlinx.serialization.ExperimentalSerializationApi
import okio.buffer import kotlinx.serialization.json.Json
import okio.sink 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 import java.io.File
import java.net.URI
val shareDir: String = System.getProperty("org.nixos.gradle2nix.share")
data class Config( data class Config(
val gradleVersion: String?, val appHome: File,
val gradleArgs: String?, val gradleHome: File,
val configurations: List<String>, val gradleSource: GradleSource,
val gradleJdk: File?,
val gradleArgs: List<String>,
val outDir: File,
val projectDir: File, val projectDir: File,
val includes: List<File>, val tasks: List<String>,
val subprojects: List<String>, val artifacts: List<ArtifactType>,
val buildSrc: Boolean, val logger: Logger,
val quiet: Boolean val dumpEvents: Boolean,
) { )
val allProjects = listOf(projectDir) + includes
@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
} }
class Main : CliktCommand( enum class LogLevel {
name = "gradle2nix" DEBUG,
) { INFO,
private val gradleVersion: String? by option("--gradle-version", "-g", WARN,
metavar = "VERSION", ERROR,
help = "Use a specific Gradle version") }
private val gradleArgs: String? by option("--gradle-args", "-a", class Gradle2Nix :
metavar = "ARGS", CliktCommand(
help = "Extra arguments to pass to Gradle") name = "gradle2nix",
) {
private val tasks: List<String> by option(
"--task",
"-t",
metavar = "TASK",
help = "Gradle tasks to run",
).split(",").default(listOf(RESOLVE_ALL_TASK))
private val configurations: List<String> by option("--configuration", "-c", private val artifacts: List<ArtifactType> by option(
metavar = "NAME", "--artifacts",
help = "Add a configuration to resolve (default: all configurations)") "-a",
.multiple() 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 includes: List<File> by option("--include", "-i", 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(".")
}
private val outDir: File? by option(
"--out-dir",
"-o",
metavar = "DIR", metavar = "DIR",
help = "Add an additional project to include") help = "Path to write generated files",
.file(exists = true, fileOkay = false, folderOkay = true, readable = true) ).file(canBeFile = false, canBeDir = true)
.multiple() .defaultLazy("<project>") { projectDir }
.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.")
}
}
private val subprojects: List<String> by option("--project", "-p", internal val lockFile: String by option(
metavar = "PATH", "--lock-file",
help = "Only resolve these subproject paths, e.g. ':', or ':sub:project' (default: all projects)") "-l",
.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'.")
}
}
private val outDir: File? by option("--out-dir", "-o",
metavar = "DIR",
help = "Path to write generated files (default: PROJECT-DIR)")
.file(fileOkay = false, folderOkay = true)
private val envFile: String by option("--env", "-e",
metavar = "FILENAME", metavar = "FILENAME",
help = "Prefix for environment files (.json and .nix)") help = "Name of the generated lock file",
.default("gradle-env") ).default("gradle.lock")
private val buildSrc: Boolean by option("--build-src", "-b", help = "Include buildSrc project (default: true)") private val gradleSource: GradleSource by mutuallyExclusiveOptions(
.flag("--no-build-src", "-nb", default = true) 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") private val gradleJdk: File? by option(
.flag(default = false) "--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: .)") private val logLevel: LogLevel by option(
.projectDir() "--log",
.default(File(".")) 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 { init {
context { context {
helpFormatter = CliktHelpFormatter(showDefaultValues = true) helpFormatter = { MordantHelpFormatter(it, showDefaultValues = true) }
} }
} }
@OptIn(ExperimentalSerializationApi::class)
override fun run() { override fun run() {
val config = Config( val logger = Logger(logLevel = logLevel, stacktrace = stacktrace)
gradleVersion,
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, gradleArgs,
configurations, outDir ?: projectDir,
projectDir, projectDir,
includes, tasks,
subprojects, artifacts,
buildSrc, logger,
quiet dumpEvents,
) )
val (log, _, _) = Logger(verbose = !config.quiet)
val paths = resolveProjects(config).map { p -> val buildSrcs =
p.toRelativeString(config.projectDir) connect(config).use { connection ->
val root = runBlocking { connection.buildModel() }
val builds: List<GradleBuild> =
buildList {
add(root)
addAll(root.editableBuilds)
} }
builds.mapNotNull { build ->
val models = connect(config).use { connection -> build.rootProject.projectDirectory
paths.associateWith { project -> .resolve("buildSrc")
log("Resolving project model: ${project.takeIf { it.isNotEmpty() } ?: "root project"}...") .takeIf { it.exists() }
connection.getBuildModel(config, project)
} }
} }
log("Building environment...") val dependencySets = mutableListOf<DependencySet>()
val nixGradleEnv = buildEnv(models)
val outDir = outDir ?: projectDir connect(config).use { connection ->
dependencySets.add(runBlocking { connection.build("project", config) })
}
val json = outDir.resolve("$envFile.json") for (buildSrc in buildSrcs) {
log("Writing environment to $json") connect(config, buildSrc).use { connection ->
dependencySets.add(
json.sink().buffer().use { out -> runBlocking {
Moshi.Builder().build() connection.build(
.adapter<Map<String, NixGradleEnv>>( buildSrc.toRelativeString(projectDir.absoluteFile).replace('/', '_'),
Types.newParameterizedType(Map::class.java, String::class.java, NixGradleEnv::class.java) config,
listOf(RESOLVE_ALL_TASK),
) )
.indent(" ") },
.toJson(out, nixGradleEnv) )
out.flush() }
} }
val nix = outDir.resolve("$envFile.nix") val env =
log("Writing Nix script to $nix") try {
processDependencies(config, dependencySets)
File(shareDir).resolve("gradle-env.nix").copyTo(nix, overwrite = true) } catch (e: Throwable) {
logger.error("Dependency parsing failed", e)
} }
}
fun ProcessedArgument<String, String>.projectDir(): ProcessedArgument<File, File> { config.outDir.mkdirs()
return convert(completionCandidates = CompletionCandidates.Path) {
File(it).also { file -> val outLockFile = config.outDir.resolve(lockFile)
if (!file.exists()) fail("Directory \"$file\" does not exist.") logger.info("Writing lock file to $outLockFile")
if (file.isFile) fail("Directory \"$file\" is a file.") outLockFile.outputStream().buffered().use { output ->
if (!file.canRead()) fail("Directory \"$file\" is not readable.") JsonFormat.encodeToStream(env, output)
if (!file.isProjectRoot()) fail("Directory \"$file\" is not a Gradle project.")
} }
} }
} }
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 import java.io.File
fun resolveProjects(config: Config) = config.allProjects.run { tailrec fun getProjectRoot(path: File): File? {
if (config.buildSrc) { return if (path.isProjectRoot()) {
flatMap { listOfNotNull(it, it.findBuildSrc()) } path
} else { } else {
this val parent = path.parentFile ?: return null
return getProjectRoot(parent)
} }
} }
fun File.findBuildSrc(): File? = fun File.isProjectRoot(): Boolean = isDirectory && (resolve("settings.gradle").isFile || resolve("settings.gradle.kts").isFile)
resolve("buildSrc").takeIf { it.isDirectory }
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

@@ -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

@@ -0,0 +1,209 @@
package org.nixos.gradle2nix
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.Paths
import kotlin.random.Random
private val app = Gradle2Nix()
@OptIn(ExperimentalSerializationApi::class)
private val json =
Json {
prettyPrint = true
prettyPrintIndent = " "
}
val testLogger = Logger(logLevel = LogLevel.DEBUG, stacktrace = true)
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 }
}
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())
}
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)
},
)
}
}
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:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#" xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-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="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 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,56 +1,19 @@
plugins { plugins {
base base
idea alias(libs.plugins.kotlin.serialization) apply false
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
} }
group = "org.nixos.gradle2nix" group = "org.nixos.gradle2nix"
version = property("VERSION") ?: "unspecified" version = property("VERSION") ?: "unspecified"
subprojects { subprojects {
repositories {
jcenter()
maven { url = uri("https://repo.gradle.org/gradle/libs-releases") }
}
group = rootProject.group group = rootProject.group
version = rootProject.version 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)
}
doLast {
sourceSets.all {
configurations[compileClasspathConfigurationName].resolve()
configurations[runtimeClasspathConfigurationName].resolve()
}
}
}
}
}
}
tasks { tasks {
wrapper { wrapper {
gradleVersion = "6.1" gradleVersion = libs.versions.gradle.get()
distributionType = Wrapper.DistributionType.ALL 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,19 +1,12 @@
{ pkgs ? import <nixpkgs> {} }: {
pkgs ? import <nixpkgs> { },
with pkgs; }:
let let
buildGradle = pkgs.callPackage ./gradle-env.nix {}; scope = pkgs.callPackage ./nix { };
in
in buildGradle { scope.gradle2nix.overrideAttrs (attrs: {
envSpec = ./gradle-env.json; passthru = (attrs.passthru or { }) // {
inherit (scope) buildGradlePackage buildMavenRepo gradleSetupHook;
src = ./.; };
})
gradleFlags = [ "installDist" ];
installPhase = ''
mkdir -p $out
cp -r app/build/install/gradle2nix/* $out/
'';
}

View File

@@ -1,12 +0,0 @@
plugins {
id "java"
}
repositories {
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}
dependencies {
implementation "com.squareup.okio:okio:2.5.0-SNAPSHOT"
}

View File

@@ -1,12 +0,0 @@
plugins {
java
}
repositories {
mavenCentral()
maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") }
}
dependencies {
"implementation"("com.squareup.okio:okio:2.5.0-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,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 { repositories {
jcenter()
mavenCentral() mavenCentral()
} }

View File

@@ -3,7 +3,6 @@ plugins {
} }
repositories { repositories {
jcenter()
mavenCentral() 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

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

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 { repositories {
jcenter() mavenCentral()
maven { url 'https://jitpack.io' } maven { url 'https://jitpack.io' }
} }

View File

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

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

@@ -0,0 +1 @@
version = '1.1.0'

View File

@@ -0,0 +1,12 @@
buildscript {
repositories {
maven {
url 'https://plugins.gradle.org/m2/'
}
}
dependencies {
classpath 'gradle.plugin.net.vivin:gradle-semantic-build-versioning:4.0.0'
}
}
rootProject.name = "settings-buildscript"

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,8 @@
plugins {
kotlin("jvm") version "1.7.21"
}
repositories {
mavenCentral()
}

View File

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

View File

@@ -0,0 +1,17 @@
plugins {
id('java')
}
repositories {
maven {
url "s3://repositories/m2"
credentials(AwsCredentials) {
accessKey "foo"
secretKey "bar"
}
}
}
dependencies {
implementation("org.apache:test-SNAPSHOT1:2.0.0-SNAPSHOT")
}

View File

@@ -0,0 +1,18 @@
plugins {
java
}
repositories {
maven {
url = uri("s3://repositories/m2")
credentials(AwsCredentials::class) {
accessKey = "foo"
secretKey = "bar"
}
}
}
dependencies {
implementation("org.apache:test-SNAPSHOT1:2.0.0-SNAPSHOT")
}

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