mirror of
https://github.com/tadfisher/gradle2nix.git
synced 2026-01-11 23:40:37 -05:00
Compare commits
45 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
30cfe58891 | ||
|
|
53672d5e87 | ||
|
|
293ecbdc10 | ||
|
|
2ca058c5b7 | ||
|
|
effc6f3c8b | ||
|
|
854024b721 | ||
|
|
96a444c22b | ||
|
|
f8c0afcd29 | ||
|
|
7303a3b097 | ||
|
|
dff8e5bc4c | ||
|
|
b33693bc6b | ||
|
|
0160c945b8 | ||
|
|
6e37e6e3f9 | ||
|
|
b53cfa6d8e | ||
|
|
03c1b713ad | ||
|
|
00e9cd4cc8 | ||
|
|
9c9ef07341 | ||
|
|
b32bf21a6c | ||
|
|
a4ef499401 | ||
|
|
49fb4caab3 | ||
|
|
95c758b11c | ||
|
|
85cebdd557 | ||
|
|
a935331795 | ||
|
|
69574d8eeb | ||
|
|
44f193c8f9 | ||
|
|
0851f93613 | ||
|
|
a7be916e97 | ||
|
|
301c64fa2f | ||
|
|
d13b7b0d6d | ||
|
|
bdce8389fb | ||
|
|
f82c91be9f | ||
|
|
799fb3debc | ||
|
|
4910251482 | ||
|
|
43c4b71928 | ||
|
|
f24e295fc0 | ||
|
|
8d2ec45ad4 | ||
|
|
e83e42f9d4 | ||
|
|
8ceeeb9611 | ||
|
|
6da87262a4 | ||
|
|
121e512a06 | ||
|
|
ba088f5bc6 | ||
|
|
f618923fd0 | ||
|
|
689a6a2090 | ||
|
|
b152ca50f2 | ||
|
|
00f8deb8f2 |
20
.editorconfig
Normal file
20
.editorconfig
Normal 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
23
COPYING
@@ -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
177
LICENSE
Normal 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
|
||||||
393
README.org
393
README.org
@@ -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,87 +101,327 @@ nix-env -if "https://github.com/tadfisher/gradle2nix/archive/master.tar.gz"
|
|||||||
=gradle2nix= is not yet packaged in =nixpkgs= itself, but work is
|
=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]].
|
||||||
|
|
||||||
*** Flake (experimental)
|
The [[./nix/build-gradle-package.nix][buildGradlePackage]] function
|
||||||
|
is provided via the =gradle2nix.passthru.buildGradlePackage=
|
||||||
|
attribute.
|
||||||
|
|
||||||
A [[./flake.nix][flake.nix]] is provided for those using [[https://nixos.wiki/wiki/Flakes][Nix flakes]]. For example, the
|
#+begin_src nix
|
||||||
following will build and run =gradle2nix= with the arguments provided
|
{ pkgs ? import <nixpkgs> {} }:
|
||||||
after =--=:
|
|
||||||
|
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
|
#+begin_example
|
||||||
nix run github:tadfisher/gradle2nix -- --help
|
nix run github:tadfisher/gradle2nix -- --help
|
||||||
#+end_example
|
#+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]].
|
||||||
|
|||||||
@@ -1,37 +1,58 @@
|
|||||||
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("reflect"))
|
implementation(libs.clikt)
|
||||||
implementation("org.gradle:gradle-tooling-api:${gradle.gradleVersion}")
|
implementation(libs.gradle.toolingApi)
|
||||||
implementation("com.github.ajalt:clikt:latest.release")
|
implementation(libs.kotlin.stdlib)
|
||||||
implementation("org.slf4j:slf4j-api:latest.release")
|
implementation(libs.kotlinx.coroutines.core)
|
||||||
runtimeOnly("org.slf4j:slf4j-simple:latest.release")
|
implementation(libs.serialization.json)
|
||||||
implementation("com.squareup.moshi:moshi-adapters:latest.release")
|
runtimeOnly(libs.slf4j.simple)
|
||||||
implementation("com.squareup.moshi:moshi-kotlin:latest.release")
|
|
||||||
kapt("com.squareup.moshi:moshi-kotlin-codegen:latest.release")
|
|
||||||
implementation("com.squareup.okio:okio:latest.release")
|
|
||||||
|
|
||||||
testRuntimeOnly(kotlin("reflect"))
|
"share"(project(":plugin:base", configuration = "shadow"))
|
||||||
testImplementation("org.spekframework.spek2:spek-dsl-jvm:latest.release")
|
"share"(project(":plugin:gradle80", configuration = "shadow"))
|
||||||
testRuntimeOnly("org.spekframework.spek2:spek-runner-junit5:latest.release")
|
"share"(project(":plugin:gradle81", configuration = "shadow"))
|
||||||
testImplementation("io.strikt:strikt-core:latest.release")
|
|
||||||
|
testImplementation(libs.kotest.assertions)
|
||||||
|
testImplementation(libs.kotest.runner)
|
||||||
|
testImplementation(libs.ktor.server.core)
|
||||||
|
testImplementation(libs.ktor.server.netty)
|
||||||
}
|
}
|
||||||
|
|
||||||
application {
|
application {
|
||||||
mainClass.set("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"), "$rootDir/gradle-env.nix")
|
.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 {
|
sourceSets {
|
||||||
@@ -42,38 +63,41 @@ sourceSets {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val updateGolden = providers.gradleProperty("update-golden")
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
(run) {
|
(run) {
|
||||||
dependsOn(installDist)
|
enabled = false
|
||||||
doFirst {
|
|
||||||
systemProperties("org.nixos.gradle2nix.share" to 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%"),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO Find out why this fails the configuration cache
|
||||||
test {
|
test {
|
||||||
|
notCompatibleWithConfigurationCache("contains a Task reference")
|
||||||
dependsOn(installDist)
|
dependsOn(installDist)
|
||||||
|
val shareDir = layout.dir(installDist.map { it.destinationDir.resolve("share") })
|
||||||
doFirst {
|
doFirst {
|
||||||
systemProperties("org.nixos.gradle2nix.share" to installDist.get().destinationDir.resolve("share"))
|
if (updateGolden.isPresent) {
|
||||||
|
systemProperty("org.nixos.gradle2nix.update-golden", "")
|
||||||
}
|
}
|
||||||
useJUnitPlatform {
|
systemProperties(
|
||||||
includeEngines("spek2")
|
"org.nixos.gradle2nix.share" to shareDir.get().asFile,
|
||||||
|
"org.nixos.gradle2nix.m2" to "http://0.0.0.0:8989/m2",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
useJUnitPlatform()
|
||||||
testLogging {
|
testLogging {
|
||||||
events("passed", "skipped", "failed")
|
events("passed", "skipped", "failed")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
withType<KotlinCompile> {
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = "1.8"
|
|
||||||
freeCompilerArgs = listOf("-Xopt-in=kotlin.RequiresOptIn")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
# This is a Gradle generated file for dependency locking.
|
|
||||||
# Manual edits can break the build and are not advised.
|
|
||||||
# This file is expected to be part of source control.
|
|
||||||
com.christophsturm:filepeek:0.1.2=testRuntimeClasspath
|
|
||||||
com.github.ajalt:clikt:2.8.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
|
||||||
com.squareup.moshi:moshi-adapters:1.11.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
|
||||||
com.squareup.moshi:moshi-kotlin:1.11.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
|
||||||
com.squareup.moshi:moshi:1.11.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
|
||||||
com.squareup.okio:okio:3.0.0-alpha.1=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
|
||||||
io.github.classgraph:classgraph:4.8.37=testRuntimeClasspath
|
|
||||||
io.strikt:strikt-core:0.28.2=testCompileClasspath,testRuntimeClasspath
|
|
||||||
net.swiftzer.semver:semver:1.1.1=runtimeClasspath,testRuntimeClasspath
|
|
||||||
org.apiguardian:apiguardian-api:1.1.0=testRuntimeClasspath
|
|
||||||
org.gradle:gradle-tooling-api:6.8.1=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
|
||||||
org.jetbrains.kotlin:kotlin-reflect:1.4.20=compileClasspath,runtimeClasspath,testCompileClasspath
|
|
||||||
org.jetbrains.kotlin:kotlin-reflect:1.4.21-2=testRuntimeClasspath
|
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.4.20=compileClasspath,runtimeClasspath
|
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.4.21-2=testCompileClasspath,testRuntimeClasspath
|
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.20=compileClasspath,runtimeClasspath
|
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.21-2=testCompileClasspath,testRuntimeClasspath
|
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.20=compileClasspath,runtimeClasspath
|
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.21-2=testCompileClasspath,testRuntimeClasspath
|
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:1.4.20=compileClasspath,runtimeClasspath
|
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:1.4.21-2=testCompileClasspath,testRuntimeClasspath
|
|
||||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.3=testRuntimeClasspath
|
|
||||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.4.2=testRuntimeClasspath
|
|
||||||
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2=testRuntimeClasspath
|
|
||||||
org.jetbrains:annotations:13.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
|
||||||
org.junit.platform:junit-platform-commons:1.6.0=testRuntimeClasspath
|
|
||||||
org.junit.platform:junit-platform-engine:1.6.0=testRuntimeClasspath
|
|
||||||
org.junit:junit-bom:5.6.0=testRuntimeClasspath
|
|
||||||
org.opentest4j:opentest4j:1.2.0=testCompileClasspath,testRuntimeClasspath
|
|
||||||
org.slf4j:slf4j-api:2.0.0-alpha1=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
|
|
||||||
org.slf4j:slf4j-simple:2.0.0-alpha1=runtimeClasspath,testRuntimeClasspath
|
|
||||||
org.spekframework.spek2:spek-dsl-jvm:2.0.15=testCompileClasspath,testRuntimeClasspath
|
|
||||||
org.spekframework.spek2:spek-runner-junit5:2.0.15=testRuntimeClasspath
|
|
||||||
org.spekframework.spek2:spek-runtime-jvm:2.0.15=testRuntimeClasspath
|
|
||||||
empty=
|
|
||||||
12
app/src/dist/share/init.gradle
vendored
12
app/src/dist/share/init.gradle
vendored
@@ -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")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,50 +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(
|
|
||||||
"settings" to build.settingsDependencies,
|
|
||||||
"plugin" to build.pluginDependencies,
|
|
||||||
"buildscript" to build.rootProject.collectDependencies(DefaultProject::buildscriptDependencies),
|
|
||||||
"project" to build.rootProject.collectDependencies(DefaultProject::projectDependencies)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun DefaultProject.collectDependencies(
|
|
||||||
chooser: DefaultProject.() -> List<DefaultArtifact>
|
|
||||||
): List<DefaultArtifact> {
|
|
||||||
val result = mutableMapOf<ArtifactIdentifier, DefaultArtifact>()
|
|
||||||
mergeRepo(result, chooser())
|
|
||||||
for (child in children) {
|
|
||||||
mergeRepo(result, child.collectDependencies(chooser))
|
|
||||||
}
|
|
||||||
return result.values.toList()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun mergeRepo(
|
|
||||||
base: MutableMap<ArtifactIdentifier, DefaultArtifact>,
|
|
||||||
extra: List<DefaultArtifact>
|
|
||||||
) {
|
|
||||||
extra.forEach { artifact ->
|
|
||||||
base.merge(artifact.id, artifact) { old, new ->
|
|
||||||
old.copy(urls = old.urls.union(new.urls).toList())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,31 +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(
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,171 +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.validate
|
import com.github.ajalt.clikt.parameters.options.split
|
||||||
|
import com.github.ajalt.clikt.parameters.types.enum
|
||||||
import com.github.ajalt.clikt.parameters.types.file
|
import com.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,
|
||||||
|
)
|
||||||
|
|
||||||
|
@OptIn(ExperimentalSerializationApi::class)
|
||||||
|
val JsonFormat =
|
||||||
|
Json {
|
||||||
|
ignoreUnknownKeys = true
|
||||||
|
prettyPrint = true
|
||||||
|
prettyPrintIndent = " "
|
||||||
|
}
|
||||||
|
|
||||||
|
sealed interface GradleSource {
|
||||||
|
data class Distribution(
|
||||||
|
val uri: URI,
|
||||||
|
) : GradleSource
|
||||||
|
|
||||||
|
data class Path(
|
||||||
|
val path: File,
|
||||||
|
) : GradleSource
|
||||||
|
|
||||||
|
data object Project : GradleSource
|
||||||
|
|
||||||
|
data class Wrapper(
|
||||||
|
val version: String,
|
||||||
|
) : GradleSource
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class LogLevel {
|
||||||
|
DEBUG,
|
||||||
|
INFO,
|
||||||
|
WARN,
|
||||||
|
ERROR,
|
||||||
|
}
|
||||||
|
|
||||||
|
class Gradle2Nix :
|
||||||
|
CliktCommand(
|
||||||
|
name = "gradle2nix",
|
||||||
) {
|
) {
|
||||||
val allProjects = listOf(projectDir) + includes
|
private val tasks: List<String> by option(
|
||||||
|
"--task",
|
||||||
|
"-t",
|
||||||
|
metavar = "TASK",
|
||||||
|
help = "Gradle tasks to run",
|
||||||
|
).split(",").default(listOf(RESOLVE_ALL_TASK))
|
||||||
|
|
||||||
|
private val artifacts: List<ArtifactType> by option(
|
||||||
|
"--artifacts",
|
||||||
|
"-a",
|
||||||
|
metavar = "ARTIFACTS",
|
||||||
|
help = "Comma-separated list of artifacts to download",
|
||||||
|
helpTags = mapOf("artifacts" to "doxygen,javadoc,samples,sources,usermanual"),
|
||||||
|
).enum<ArtifactType>(key = { it.name.lowercase() }).split(",").default(emptyList())
|
||||||
|
|
||||||
|
private val projectDir: File by option(
|
||||||
|
"--project",
|
||||||
|
"-p",
|
||||||
|
help = "Path to the project root",
|
||||||
|
).file(
|
||||||
|
mustExist = true,
|
||||||
|
mustBeReadable = true,
|
||||||
|
canBeFile = false,
|
||||||
|
).convert { file ->
|
||||||
|
getProjectRoot(file) ?: fail("Could not locate project root in \"$file\" or its parents.")
|
||||||
|
}.defaultLazy("Current directory") {
|
||||||
|
File(".")
|
||||||
}
|
}
|
||||||
|
|
||||||
class Main : CliktCommand(
|
private val outDir: File? by option(
|
||||||
name = "gradle2nix"
|
"--out-dir",
|
||||||
) {
|
"-o",
|
||||||
private val gradleVersion: String? by option("--gradle-version", "-g",
|
|
||||||
metavar = "VERSION",
|
|
||||||
help = "Use a specific Gradle version")
|
|
||||||
|
|
||||||
private val gradleArgs: String? by option("--gradle-args", "-a",
|
|
||||||
metavar = "ARGS",
|
|
||||||
help = "Extra arguments to pass to Gradle")
|
|
||||||
|
|
||||||
private val configurations: List<String> by option("--configuration", "-c",
|
|
||||||
metavar = "NAME",
|
|
||||||
help = "Add a configuration to resolve (default: all configurations)")
|
|
||||||
.multiple()
|
|
||||||
|
|
||||||
private val includes: List<File> by option("--include", "-i",
|
|
||||||
metavar = "DIR",
|
metavar = "DIR",
|
||||||
help = "Add an additional project to include")
|
help = "Path to write generated files",
|
||||||
.file(mustExist = true, canBeFile = false, canBeDir = true, mustBeReadable = 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'.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val outDir: File? by option("--out-dir", "-o",
|
|
||||||
metavar = "DIR",
|
|
||||||
help = "Path to write generated files (default: PROJECT-DIR)")
|
|
||||||
.file(canBeFile = false, canBeDir = true)
|
|
||||||
|
|
||||||
val envFile: String by option("--env", "-e",
|
|
||||||
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) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Visible for testing
|
@OptIn(ExperimentalSerializationApi::class)
|
||||||
lateinit var config: Config
|
|
||||||
|
|
||||||
override fun run() {
|
override fun run() {
|
||||||
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")
|
|
||||||
log("Writing Nix script to $nix")
|
|
||||||
|
|
||||||
File(shareDir).resolve("gradle-env.nix").copyTo(nix, overwrite = true)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun ProcessedArgument<String, String>.projectDir(): ProcessedArgument<File, File> {
|
val env =
|
||||||
return convert(completionCandidates = CompletionCandidates.Path) {
|
try {
|
||||||
File(it).also { file ->
|
processDependencies(config, dependencySets)
|
||||||
if (!file.exists()) fail("Directory \"$file\" does not exist.")
|
} catch (e: Throwable) {
|
||||||
if (file.isFile) fail("Directory \"$file\" is a file.")
|
logger.error("Dependency parsing failed", e)
|
||||||
if (!file.canRead()) fail("Directory \"$file\" is not readable.")
|
}
|
||||||
if (!file.isProjectRoot()) fail("Directory \"$file\" is not a Gradle project.")
|
|
||||||
|
config.outDir.mkdirs()
|
||||||
|
|
||||||
|
val outLockFile = config.outDir.resolve(lockFile)
|
||||||
|
logger.info("Writing lock file to $outLockFile")
|
||||||
|
outLockFile.outputStream().buffered().use { output ->
|
||||||
|
JsonFormat.encodeToStream(env, output)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun main(args: Array<String>) = Main().main(args)
|
fun main(args: Array<String>) {
|
||||||
|
Gradle2Nix().main(args)
|
||||||
|
}
|
||||||
|
|||||||
63
app/src/main/kotlin/org/nixos/gradle2nix/Process.kt
Normal file
63
app/src/main/kotlin/org/nixos/gradle2nix/Process.kt
Normal 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 }
|
||||||
@@ -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)
|
|
||||||
|
|||||||
157
app/src/main/kotlin/org/nixos/gradle2nix/Version.kt
Normal file
157
app/src/main/kotlin/org/nixos/gradle2nix/Version.kt
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
package org.nixos.gradle2nix
|
|
||||||
|
|
||||||
import org.spekframework.spek2.Spek
|
|
||||||
import org.spekframework.spek2.style.specification.describe
|
|
||||||
import strikt.api.expectThat
|
|
||||||
import strikt.assertions.containsKey
|
|
||||||
|
|
||||||
object BuildSrcTest : Spek({
|
|
||||||
fixture("buildsrc/plugin-in-buildsrc/kotlin")
|
|
||||||
val fixture: Fixture by memoized()
|
|
||||||
|
|
||||||
describe("project with plugin in buildSrc") {
|
|
||||||
fixture.run()
|
|
||||||
|
|
||||||
it("should include buildSrc in gradle env", timeout = 0) {
|
|
||||||
expectThat(fixture.env()).containsKey("buildSrc")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
51
app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt
Normal file
51
app/src/test/kotlin/org/nixos/gradle2nix/GoldenTest.kt
Normal 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")
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -1,60 +1,209 @@
|
|||||||
package org.nixos.gradle2nix
|
package org.nixos.gradle2nix
|
||||||
|
|
||||||
import com.squareup.moshi.Moshi
|
import com.github.ajalt.clikt.core.main
|
||||||
import com.squareup.moshi.Types
|
import io.kotest.assertions.fail
|
||||||
import okio.buffer
|
import io.kotest.common.ExperimentalKotest
|
||||||
import okio.source
|
import io.kotest.common.KotestInternal
|
||||||
import org.spekframework.spek2.dsl.Root
|
import io.kotest.core.extensions.MountableExtension
|
||||||
import strikt.api.expectThat
|
import io.kotest.core.listeners.AfterSpecListener
|
||||||
import strikt.assertions.exists
|
import io.kotest.core.names.TestName
|
||||||
import strikt.assertions.isNotNull
|
import io.kotest.core.source.sourceRef
|
||||||
import strikt.assertions.toPath
|
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.Files
|
||||||
import java.nio.file.Path
|
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
import kotlin.io.path.ExperimentalPathApi
|
import kotlin.random.Random
|
||||||
import kotlin.io.path.createTempDirectory
|
|
||||||
|
|
||||||
private val moshi = Moshi.Builder().build()
|
private val app = Gradle2Nix()
|
||||||
|
|
||||||
class Fixture(val project: Path) {
|
@OptIn(ExperimentalSerializationApi::class)
|
||||||
private val app = Main()
|
private val json =
|
||||||
|
Json {
|
||||||
fun run(vararg args: String) {
|
prettyPrint = true
|
||||||
app.main(args.toList() + project.toString())
|
prettyPrintIndent = " "
|
||||||
}
|
}
|
||||||
|
|
||||||
fun env(): Map<String, NixGradleEnv> {
|
val testLogger = Logger(logLevel = LogLevel.DEBUG, stacktrace = true)
|
||||||
val file = (app.outDir ?: project.toFile()).resolve("${app.envFile}.json")
|
|
||||||
expectThat(file).toPath().exists()
|
|
||||||
val env = file.source().buffer().use { source ->
|
|
||||||
moshi
|
|
||||||
.adapter<Map<String, NixGradleEnv>>(
|
|
||||||
Types.newParameterizedType(Map::class.java, String::class.java, NixGradleEnv::class.java)
|
|
||||||
).fromJson(source)
|
|
||||||
}
|
|
||||||
expectThat(env).isNotNull()
|
|
||||||
return env!!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@OptIn(ExperimentalPathApi::class)
|
fun fixture(path: String): File = Paths.get("../fixtures", path).toFile()
|
||||||
fun Root.fixture(name: String) {
|
|
||||||
val fixture by memoized(
|
@OptIn(ExperimentalKotest::class, ExperimentalSerializationApi::class, KotestInternal::class)
|
||||||
factory = {
|
suspend fun TestScope.fixture(
|
||||||
val url = checkNotNull(Thread.currentThread().contextClassLoader.getResource(name)?.toURI()) {
|
project: String,
|
||||||
"$name: No test fixture found"
|
vararg args: String,
|
||||||
|
test: suspend TestScope.(File, Env) -> Unit,
|
||||||
|
) {
|
||||||
|
val tmp = Paths.get("build/tmp/gradle2nix").apply { toFile().mkdirs() }
|
||||||
|
val baseDir = Paths.get("../fixtures/projects", project).toFile()
|
||||||
|
val children =
|
||||||
|
baseDir
|
||||||
|
.listFiles(FileFilter { it.isDirectory && (it.name == "groovy" || it.name == "kotlin") })
|
||||||
|
?.toList()
|
||||||
|
val cases =
|
||||||
|
if (children.isNullOrEmpty()) {
|
||||||
|
listOf(project to baseDir)
|
||||||
|
} else {
|
||||||
|
children.map { "$project.${it.name}" to it }
|
||||||
}
|
}
|
||||||
val fixtureRoot = Paths.get(url)
|
for (case in cases) {
|
||||||
val dest = createTempDirectory("gradle2nix")
|
registerTestCase(
|
||||||
val src = checkNotNull(fixtureRoot.takeIf { Files.exists(it) }) {
|
NestedTest(
|
||||||
"$name: Test fixture not found: $fixtureRoot"
|
name = TestName(case.first),
|
||||||
|
disabled = false,
|
||||||
|
config = null,
|
||||||
|
type = TestType.Dynamic,
|
||||||
|
source = sourceRef(),
|
||||||
|
) {
|
||||||
|
var dirName = case.second.toString().replace("/", ".")
|
||||||
|
while (dirName.startsWith(".")) dirName = dirName.removePrefix(".")
|
||||||
|
while (dirName.endsWith(".")) dirName = dirName.removeSuffix(".")
|
||||||
|
|
||||||
|
val tempDir = File(tmp.toFile(), dirName)
|
||||||
|
tempDir.deleteRecursively()
|
||||||
|
case.second.copyRecursively(tempDir)
|
||||||
|
|
||||||
|
if (!tempDir.resolve("settings.gradle").exists() && !tempDir.resolve("settings.gradle.kts").exists()) {
|
||||||
|
Files.createFile(tempDir.resolve("settings.gradle").toPath())
|
||||||
}
|
}
|
||||||
src.toFile().copyRecursively(dest.toFile())
|
app.main(
|
||||||
Fixture(dest)
|
args.toList() +
|
||||||
|
listOf(
|
||||||
|
"-p",
|
||||||
|
tempDir.toString(),
|
||||||
|
"--log",
|
||||||
|
"debug",
|
||||||
|
"--stacktrace",
|
||||||
|
"--dump-events",
|
||||||
|
"--",
|
||||||
|
"-Dorg.nixos.gradle2nix.m2=$m2",
|
||||||
|
"--info",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
val file = tempDir.resolve(app.lockFile)
|
||||||
|
file.shouldBeAFile()
|
||||||
|
val env: Env =
|
||||||
|
file.inputStream().buffered().use { input ->
|
||||||
|
Json.decodeFromStream(input)
|
||||||
|
}
|
||||||
|
test(tempDir, env)
|
||||||
},
|
},
|
||||||
destructor = {
|
|
||||||
it.project.toFile().deleteRecursively()
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val updateGolden = System.getProperty("org.nixos.gradle2nix.update-golden") != null
|
||||||
|
|
||||||
|
@OptIn(ExperimentalSerializationApi::class)
|
||||||
|
suspend fun TestScope.golden(
|
||||||
|
project: String,
|
||||||
|
vararg args: String,
|
||||||
|
) {
|
||||||
|
fixture(project, *args) { dir, env ->
|
||||||
|
val filename = "${testCase.name.testName}.json"
|
||||||
|
val goldenFile = File("../fixtures/golden/$filename")
|
||||||
|
if (updateGolden) {
|
||||||
|
goldenFile.parentFile.mkdirs()
|
||||||
|
goldenFile.outputStream().buffered().use { output ->
|
||||||
|
json.encodeToStream(env, output)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!goldenFile.exists()) {
|
||||||
|
fail("Golden file '$filename' doesn't exist. Run with --update-golden to generate.")
|
||||||
|
}
|
||||||
|
val goldenData =
|
||||||
|
try {
|
||||||
|
goldenFile.readText()
|
||||||
|
} catch (e: SerializationException) {
|
||||||
|
fail("Failed to load golden data from '$filename'. Run with --update-golden to regenerate.")
|
||||||
|
}
|
||||||
|
json.encodeToString(env) shouldBe goldenData
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val m2: String = requireNotNull(System.getProperty("org.nixos.gradle2nix.m2"))
|
||||||
|
|
||||||
|
object MavenRepo : MountableExtension<MavenRepo.Config, NettyApplicationEngine>, AfterSpecListener {
|
||||||
|
class Config {
|
||||||
|
var repository: File = File("../fixtures/repositories/m2")
|
||||||
|
var path: String = ""
|
||||||
|
var port: Int? = null
|
||||||
|
var host: String = DEFAULT_HOST
|
||||||
|
}
|
||||||
|
|
||||||
|
const val DEFAULT_HOST = "0.0.0.0"
|
||||||
|
|
||||||
|
private val coroutineScope = CoroutineScope(Dispatchers.Default)
|
||||||
|
private var server: NettyApplicationEngine? = null
|
||||||
|
private val config = Config()
|
||||||
|
|
||||||
|
init {
|
||||||
|
require(config.repository.exists()) {
|
||||||
|
"test repository doesn't exist: ${config.repository}"
|
||||||
|
}
|
||||||
|
val m2Url = Url(m2)
|
||||||
|
config.path = m2Url.encodedPath
|
||||||
|
config.host = m2Url.host
|
||||||
|
config.port = m2Url.port
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun mount(configure: Config.() -> Unit): NettyApplicationEngine {
|
||||||
|
config.configure()
|
||||||
|
// try 3 times to find a port if random
|
||||||
|
return tryStart(3).also { this.server = it }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun tryStart(attempts: Int): NettyApplicationEngine =
|
||||||
|
try {
|
||||||
|
val p = config.port ?: Random.nextInt(10000, 65000)
|
||||||
|
val s =
|
||||||
|
embeddedServer(Netty, port = p, host = config.host) {
|
||||||
|
routing {
|
||||||
|
staticFiles(
|
||||||
|
remotePath = config.path,
|
||||||
|
dir = config.repository,
|
||||||
|
index = null,
|
||||||
|
) {
|
||||||
|
enableAutoHeadResponse()
|
||||||
|
contentType { path ->
|
||||||
|
when (path.extension) {
|
||||||
|
"pom", "xml" -> ContentType.Text.Xml
|
||||||
|
"jar" -> ContentType("application", "java-archive")
|
||||||
|
else -> ContentType.Text.Plain
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
coroutineScope.launch { s.start(wait = true) }
|
||||||
|
s.engine
|
||||||
|
} catch (e: Throwable) {
|
||||||
|
if (config.port == null && attempts > 0) tryStart(attempts - 1) else throw e
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun afterSpec(spec: Spec) {
|
||||||
|
server?.stop()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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 |
@@ -1,5 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
base
|
base
|
||||||
|
alias(libs.plugins.kotlin.serialization) apply false
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "org.nixos.gradle2nix"
|
group = "org.nixos.gradle2nix"
|
||||||
@@ -10,37 +11,9 @@ subprojects {
|
|||||||
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)
|
|
||||||
file("buildscript-gradle.lockfile").delete()
|
|
||||||
file("gradle.lockfile").delete()
|
|
||||||
}
|
|
||||||
doLast {
|
|
||||||
configurations.matching { it.isCanBeResolved }.all { resolve() }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
wrapper {
|
wrapper {
|
||||||
gradleVersion = "6.8.1"
|
gradleVersion = libs.versions.gradle.get()
|
||||||
distributionType = Wrapper.DistributionType.ALL
|
distributionType = Wrapper.DistributionType.ALL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
8
buildSrc/build.gradle.kts
Normal file
8
buildSrc/build.gradle.kts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
plugins {
|
||||||
|
`kotlin-dsl`
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(libs.gradle.kotlin)
|
||||||
|
implementation(libs.gradle.shadow)
|
||||||
|
}
|
||||||
14
buildSrc/settings.gradle.kts
Normal file
14
buildSrc/settings.gradle.kts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
@file:Suppress("UnstableApiUsage")
|
||||||
|
|
||||||
|
dependencyResolutionManagement {
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
gradlePluginPortal()
|
||||||
|
}
|
||||||
|
|
||||||
|
versionCatalogs {
|
||||||
|
register("libs") {
|
||||||
|
from(files("../gradle/libs.versions.toml"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
62
buildSrc/src/main/kotlin/plugin-conventions.gradle.kts
Normal file
62
buildSrc/src/main/kotlin/plugin-conventions.gradle.kts
Normal 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" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
44
default.nix
44
default.nix
@@ -1,38 +1,12 @@
|
|||||||
{ pkgs ? import <nixpkgs> {} }:
|
{
|
||||||
|
pkgs ? import <nixpkgs> { },
|
||||||
with pkgs;
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
buildGradle = callPackage ./gradle-env.nix {};
|
scope = pkgs.callPackage ./nix { };
|
||||||
|
in
|
||||||
gradle2nix = buildGradle {
|
scope.gradle2nix.overrideAttrs (attrs: {
|
||||||
envSpec = ./gradle-env.json;
|
passthru = (attrs.passthru or { }) // {
|
||||||
|
inherit (scope) buildGradlePackage buildMavenRepo gradleSetupHook;
|
||||||
src = lib.cleanSourceWith {
|
|
||||||
filter = lib.cleanSourceFilter;
|
|
||||||
src = lib.cleanSourceWith {
|
|
||||||
filter = path: type: let baseName = baseNameOf path; in !(
|
|
||||||
(type == "directory" && (
|
|
||||||
baseName == "build" ||
|
|
||||||
baseName == ".idea" ||
|
|
||||||
baseName == ".gradle"
|
|
||||||
)) ||
|
|
||||||
(lib.hasSuffix ".iml" baseName)
|
|
||||||
);
|
|
||||||
src = ./.;
|
|
||||||
};
|
};
|
||||||
};
|
})
|
||||||
|
|
||||||
gradleFlags = [ "installDist" ];
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out
|
|
||||||
cp -r app/build/install/gradle2nix/* $out/
|
|
||||||
'';
|
|
||||||
|
|
||||||
passthru = {
|
|
||||||
plugin = "${gradle2nix}/share/plugin.jar";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
in gradle2nix
|
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
val kotlinVersion = "1.3.61"
|
|
||||||
val spekVersion = "2.0.9"
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
application
|
|
||||||
kotlin("jvm") version "1.3.61"
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
compile(kotlin("stdlib"))
|
|
||||||
implementation("com.natpryce:konfig:1.6.10.0")
|
|
||||||
implementation("com.github.pengrad:java-telegram-bot-api:4.6.0")
|
|
||||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3")
|
|
||||||
implementation("org.jetbrains.exposed:exposed-core:0.21.1")
|
|
||||||
implementation("org.jetbrains.exposed", "exposed-dao", "0.21.1")
|
|
||||||
implementation("org.jetbrains.exposed", "exposed-jdbc", "0.21.1")
|
|
||||||
implementation("org.jetbrains.exposed", "exposed-jodatime", "0.21.1")
|
|
||||||
implementation("io.javalin:javalin:3.7.0")
|
|
||||||
implementation("org.slf4j:slf4j-simple:1.8.0-beta4")
|
|
||||||
implementation(group = "org.xerial", name = "sqlite-jdbc", version = "3.30.1")
|
|
||||||
implementation("org.postgresql:postgresql:42.2.2")
|
|
||||||
implementation("com.fasterxml.jackson.core:jackson-databind:2.10.1")
|
|
||||||
testImplementation("org.spekframework.spek2:spek-dsl-jvm:$spekVersion")
|
|
||||||
testRuntimeOnly("org.spekframework.spek2:spek-runner-junit5:$spekVersion")
|
|
||||||
testCompile("com.winterbe:expekt:0.5.0")
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
jcenter()
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
plugins {
|
|
||||||
`java-library`
|
|
||||||
id("com.example.custom-spotless")
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
plugins {
|
|
||||||
`kotlin-dsl`
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
jcenter()
|
|
||||||
gradlePluginPortal()
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation("com.diffplug.spotless:spotless-plugin-gradle:3.28.1")
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
package com.example
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
com.diffplug.gradle.spotless
|
|
||||||
}
|
|
||||||
|
|
||||||
spotless {
|
|
||||||
kotlin {
|
|
||||||
ktlint()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
plugins {
|
|
||||||
java
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
maven { url = uri("http://localhost:9999") }
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation(platform("io.micrometer:micrometer-bom:1.5.1"))
|
|
||||||
implementation("io.micrometer:micrometer-core")
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
plugins {
|
|
||||||
java
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
maven { url = uri("http://localhost:9999") }
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
"implementation"("org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT")
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
plugins {
|
|
||||||
java
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
maven { url = uri("http://localhost:9999") }
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
"implementation"("org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT")
|
|
||||||
}
|
|
||||||
20
fixtures/golden/artifacts/sources-javadoc.kotlin.json
Normal file
20
fixtures/golden/artifacts/sources-javadoc.kotlin.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
64
fixtures/golden/basic/basic-java-project.groovy.json
Normal file
64
fixtures/golden/basic/basic-java-project.groovy.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
64
fixtures/golden/basic/basic-java-project.kotlin.json
Normal file
64
fixtures/golden/basic/basic-java-project.kotlin.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1190
fixtures/golden/basic/basic-kotlin-project.kotlin.json
Normal file
1190
fixtures/golden/basic/basic-kotlin-project.kotlin.json
Normal file
File diff suppressed because it is too large
Load Diff
502
fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json
Normal file
502
fixtures/golden/buildsrc/plugin-in-buildsrc.kotlin.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
fixtures/golden/dependency/classifier.groovy.json
Normal file
24
fixtures/golden/dependency/classifier.groovy.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
fixtures/golden/dependency/classifier.kotlin.json
Normal file
24
fixtures/golden/dependency/classifier.kotlin.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
44
fixtures/golden/dependency/maven-bom.kotlin.json
Normal file
44
fixtures/golden/dependency/maven-bom.kotlin.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
12
fixtures/golden/dependency/snapshot-dynamic.groovy.json
Normal file
12
fixtures/golden/dependency/snapshot-dynamic.groovy.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
12
fixtures/golden/dependency/snapshot-dynamic.kotlin.json
Normal file
12
fixtures/golden/dependency/snapshot-dynamic.kotlin.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
80
fixtures/golden/dependency/snapshot-redirect.groovy.json
Normal file
80
fixtures/golden/dependency/snapshot-redirect.groovy.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
12
fixtures/golden/dependency/snapshot.groovy.json
Normal file
12
fixtures/golden/dependency/snapshot.groovy.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
12
fixtures/golden/dependency/snapshot.kotlin.json
Normal file
12
fixtures/golden/dependency/snapshot.kotlin.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
32
fixtures/golden/included-build.groovy.json
Normal file
32
fixtures/golden/included-build.groovy.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
158
fixtures/golden/integration/settings-buildscript.groovy.json
Normal file
158
fixtures/golden/integration/settings-buildscript.groovy.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
22
fixtures/golden/ivy/basic.kotlin.json
Normal file
22
fixtures/golden/ivy/basic.kotlin.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
362
fixtures/golden/plugin/resolves-from-default-repo.groovy.json
Normal file
362
fixtures/golden/plugin/resolves-from-default-repo.groovy.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
362
fixtures/golden/plugin/resolves-from-default-repo.kotlin.json
Normal file
362
fixtures/golden/plugin/resolves-from-default-repo.kotlin.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
fixtures/golden/s3/maven-snapshot.groovy.json
Normal file
2
fixtures/golden/s3/maven-snapshot.groovy.json
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
{
|
||||||
|
}
|
||||||
2
fixtures/golden/s3/maven-snapshot.kotlin.json
Normal file
2
fixtures/golden/s3/maven-snapshot.kotlin.json
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
{
|
||||||
|
}
|
||||||
2
fixtures/golden/s3/maven.groovy.json
Normal file
2
fixtures/golden/s3/maven.groovy.json
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
{
|
||||||
|
}
|
||||||
2
fixtures/golden/s3/maven.kotlin.json
Normal file
2
fixtures/golden/s3/maven.kotlin.json
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
{
|
||||||
|
}
|
||||||
12
fixtures/golden/settings/buildscript.groovy.json
Normal file
12
fixtures/golden/settings/buildscript.groovy.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
106
fixtures/golden/subprojects/multi-module.groovy.json
Normal file
106
fixtures/golden/subprojects/multi-module.groovy.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
106
fixtures/golden/subprojects/multi-module.kotlin.json
Normal file
106
fixtures/golden/subprojects/multi-module.kotlin.json
Normal 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="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
with (import <nixpkgs> {});
|
|
||||||
let
|
|
||||||
buildGradle = callPackage ./gradle-env.nix {};
|
|
||||||
in
|
|
||||||
buildGradle {
|
|
||||||
envSpec = ./gradle-env.json;
|
|
||||||
src = ./.;
|
|
||||||
gradleFlags = [ "tasks" ];
|
|
||||||
}
|
|
||||||
@@ -1,456 +0,0 @@
|
|||||||
{
|
|
||||||
"": {
|
|
||||||
"name": "settings-buildscript",
|
|
||||||
"version": "1.1.0",
|
|
||||||
"path": "",
|
|
||||||
"gradle": {
|
|
||||||
"version": "5.0",
|
|
||||||
"type": "bin",
|
|
||||||
"url": "https://services.gradle.org/distributions/gradle-5.0-bin.zip",
|
|
||||||
"sha256": "6157ac9f3410bc63644625b3b3e9e96c963afd7910ae0697792db57813ee79a6",
|
|
||||||
"nativeVersion": "0.14"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"settings": [
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "com.googlecode.javaewah",
|
|
||||||
"name": "JavaEWAH",
|
|
||||||
"version": "1.1.6",
|
|
||||||
"type": "jar",
|
|
||||||
"extension": "jar"
|
|
||||||
},
|
|
||||||
"name": "JavaEWAH-1.1.6.jar",
|
|
||||||
"path": "com/googlecode/javaewah/JavaEWAH/1.1.6",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar"
|
|
||||||
],
|
|
||||||
"sha256": "f78d44a1e3877f1ce748b4a85df5171e5e8e9a5c3c6f63bb9003db6f84cce952"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "com.googlecode.javaewah",
|
|
||||||
"name": "JavaEWAH",
|
|
||||||
"version": "1.1.6",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "JavaEWAH-1.1.6.pom",
|
|
||||||
"path": "com/googlecode/javaewah/JavaEWAH/1.1.6",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.pom"
|
|
||||||
],
|
|
||||||
"sha256": "7f4ff919b1ee17bf3776e058a3f20e6173db23a5e44cf2d107ec7570c186abf0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "com.jcraft",
|
|
||||||
"name": "jsch",
|
|
||||||
"version": "0.1.54",
|
|
||||||
"type": "jar",
|
|
||||||
"extension": "jar"
|
|
||||||
},
|
|
||||||
"name": "jsch-0.1.54.jar",
|
|
||||||
"path": "com/jcraft/jsch/0.1.54",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar"
|
|
||||||
],
|
|
||||||
"sha256": "92eb273a3316762478fdd4fe03a0ce1842c56f496c9c12fe1235db80450e1fdb"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "com.jcraft",
|
|
||||||
"name": "jsch",
|
|
||||||
"version": "0.1.54",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "jsch-0.1.54.pom",
|
|
||||||
"path": "com/jcraft/jsch/0.1.54",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/com/jcraft/jsch/0.1.54/jsch-0.1.54.pom"
|
|
||||||
],
|
|
||||||
"sha256": "ab8f512039be7f6ae20e18e743b4a9d8a20958494431917da58ae5aaef8a3478"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "commons-codec",
|
|
||||||
"name": "commons-codec",
|
|
||||||
"version": "1.6",
|
|
||||||
"type": "jar",
|
|
||||||
"extension": "jar"
|
|
||||||
},
|
|
||||||
"name": "commons-codec-1.6.jar",
|
|
||||||
"path": "commons-codec/commons-codec/1.6",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.jar"
|
|
||||||
],
|
|
||||||
"sha256": "54b34e941b8e1414bd3e40d736efd3481772dc26db3296f6aa45cec9f6203d86"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "commons-codec",
|
|
||||||
"name": "commons-codec",
|
|
||||||
"version": "1.6",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "commons-codec-1.6.pom",
|
|
||||||
"path": "commons-codec/commons-codec/1.6",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom"
|
|
||||||
],
|
|
||||||
"sha256": "a06e35d3fff3a6b813d94894ebf3e498f9540c864c5b39ae783907e3a6c72889"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "commons-logging",
|
|
||||||
"name": "commons-logging",
|
|
||||||
"version": "1.1.3",
|
|
||||||
"type": "jar",
|
|
||||||
"extension": "jar"
|
|
||||||
},
|
|
||||||
"name": "commons-logging-1.1.3.jar",
|
|
||||||
"path": "commons-logging/commons-logging/1.1.3",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar"
|
|
||||||
],
|
|
||||||
"sha256": "70903f6fc82e9908c8da9f20443f61d90f0870a312642991fe8462a0b9391784"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "commons-logging",
|
|
||||||
"name": "commons-logging",
|
|
||||||
"version": "1.1.3",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "commons-logging-1.1.3.pom",
|
|
||||||
"path": "commons-logging/commons-logging/1.1.3",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.pom"
|
|
||||||
],
|
|
||||||
"sha256": "3250ac3ac6bd60ed0631f5cd0335032b2993d63e405a6ae0555d27a7e4865849"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "gradle.plugin.net.vivin",
|
|
||||||
"name": "gradle-semantic-build-versioning",
|
|
||||||
"version": "4.0.0",
|
|
||||||
"type": "jar",
|
|
||||||
"extension": "jar"
|
|
||||||
},
|
|
||||||
"name": "gradle-semantic-build-versioning-4.0.0.jar",
|
|
||||||
"path": "gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.jar"
|
|
||||||
],
|
|
||||||
"sha256": "5138e67ce8e019437800b93c9f6f9d0fcbebefadc96fbc4ebc0975c99a261ef8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "gradle.plugin.net.vivin",
|
|
||||||
"name": "gradle-semantic-build-versioning",
|
|
||||||
"version": "4.0.0",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "gradle-semantic-build-versioning-4.0.0.pom",
|
|
||||||
"path": "gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/gradle/plugin/net/vivin/gradle-semantic-build-versioning/4.0.0/gradle-semantic-build-versioning-4.0.0.pom"
|
|
||||||
],
|
|
||||||
"sha256": "4f2828741607ed102d95eb5f189d496c7840ed463acea89f1e51a60567714ef7"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.apache",
|
|
||||||
"name": "apache",
|
|
||||||
"version": "9",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "apache-9.pom",
|
|
||||||
"path": "org/apache/apache/9",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/apache/apache/9/apache-9.pom"
|
|
||||||
],
|
|
||||||
"sha256": "4946e60a547c8eda69f3bc23c5b6f0dadcf8469ea49b1d1da7de34aecfcf18dd"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.apache",
|
|
||||||
"name": "apache",
|
|
||||||
"version": "13",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "apache-13.pom",
|
|
||||||
"path": "org/apache/apache/13",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/apache/apache/13/apache-13.pom"
|
|
||||||
],
|
|
||||||
"sha256": "ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.apache.commons",
|
|
||||||
"name": "commons-parent",
|
|
||||||
"version": "22",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "commons-parent-22.pom",
|
|
||||||
"path": "org/apache/commons/commons-parent/22",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/apache/commons/commons-parent/22/commons-parent-22.pom"
|
|
||||||
],
|
|
||||||
"sha256": "fb8c5e55e30a7addb4ff210858a0e8d2494ed6757bbe19012da99d51586c3cbb"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.apache.commons",
|
|
||||||
"name": "commons-parent",
|
|
||||||
"version": "28",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "commons-parent-28.pom",
|
|
||||||
"path": "org/apache/commons/commons-parent/28",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/apache/commons/commons-parent/28/commons-parent-28.pom"
|
|
||||||
],
|
|
||||||
"sha256": "14733a68e8b120b69de60cd96d222146dcf32f03c1c6cc6a750b1269bafe86c7"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.apache.httpcomponents",
|
|
||||||
"name": "httpclient",
|
|
||||||
"version": "4.3.6",
|
|
||||||
"type": "jar",
|
|
||||||
"extension": "jar"
|
|
||||||
},
|
|
||||||
"name": "httpclient-4.3.6.jar",
|
|
||||||
"path": "org/apache/httpcomponents/httpclient/4.3.6",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar"
|
|
||||||
],
|
|
||||||
"sha256": "79838d9eaef73d4f852c63a480830c3a2d4b590f0ab3ae815a489463e4714004"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.apache.httpcomponents",
|
|
||||||
"name": "httpclient",
|
|
||||||
"version": "4.3.6",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "httpclient-4.3.6.pom",
|
|
||||||
"path": "org/apache/httpcomponents/httpclient/4.3.6",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.pom"
|
|
||||||
],
|
|
||||||
"sha256": "d02634f6131e914961c02aa836711ebac72704b27e26c5bd223bbad89b1b64c3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.apache.httpcomponents",
|
|
||||||
"name": "httpcomponents-client",
|
|
||||||
"version": "4.3.6",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "httpcomponents-client-4.3.6.pom",
|
|
||||||
"path": "org/apache/httpcomponents/httpcomponents-client/4.3.6",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-client/4.3.6/httpcomponents-client-4.3.6.pom"
|
|
||||||
],
|
|
||||||
"sha256": "4ada2827b496339826891c7c81dceba647029de6fc1888b16b3cab5650abcc63"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.apache.httpcomponents",
|
|
||||||
"name": "httpcomponents-core",
|
|
||||||
"version": "4.3.3",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "httpcomponents-core-4.3.3.pom",
|
|
||||||
"path": "org/apache/httpcomponents/httpcomponents-core/4.3.3",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-core/4.3.3/httpcomponents-core-4.3.3.pom"
|
|
||||||
],
|
|
||||||
"sha256": "c16e2fc0d49ba7a02cef5b5e2600585a9f673553328a6f9e58f24296df1dd031"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.apache.httpcomponents",
|
|
||||||
"name": "httpcore",
|
|
||||||
"version": "4.3.3",
|
|
||||||
"type": "jar",
|
|
||||||
"extension": "jar"
|
|
||||||
},
|
|
||||||
"name": "httpcore-4.3.3.jar",
|
|
||||||
"path": "org/apache/httpcomponents/httpcore/4.3.3",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar"
|
|
||||||
],
|
|
||||||
"sha256": "5285de80af1651c489313b91a9f40c65a4cdcb6b3bde716fcc028d16869a5a93"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.apache.httpcomponents",
|
|
||||||
"name": "httpcore",
|
|
||||||
"version": "4.3.3",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "httpcore-4.3.3.pom",
|
|
||||||
"path": "org/apache/httpcomponents/httpcore/4.3.3",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.pom"
|
|
||||||
],
|
|
||||||
"sha256": "b427f7cf67c75a4e3f9e2108d35bf45303573c145ec778fcadcffacef17a1264"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.apache.httpcomponents",
|
|
||||||
"name": "project",
|
|
||||||
"version": "7",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "project-7.pom",
|
|
||||||
"path": "org/apache/httpcomponents/project/7",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/apache/httpcomponents/project/7/project-7.pom"
|
|
||||||
],
|
|
||||||
"sha256": "3d6eba428555a558de046b5d76eacc1f5a54b4f5f20b84d636ed7aff18aa48c3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.eclipse.jgit",
|
|
||||||
"name": "org.eclipse.jgit",
|
|
||||||
"version": "4.8.0.201706111038-r",
|
|
||||||
"type": "jar",
|
|
||||||
"extension": "jar"
|
|
||||||
},
|
|
||||||
"name": "org.eclipse.jgit-4.8.0.201706111038-r.jar",
|
|
||||||
"path": "org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.jar"
|
|
||||||
],
|
|
||||||
"sha256": "49d912e8d5cce0dd08dca3d390189db8692a8f7e3363cdbbe182581462000aba"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.eclipse.jgit",
|
|
||||||
"name": "org.eclipse.jgit",
|
|
||||||
"version": "4.8.0.201706111038-r",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "org.eclipse.jgit-4.8.0.201706111038-r.pom",
|
|
||||||
"path": "org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit/4.8.0.201706111038-r/org.eclipse.jgit-4.8.0.201706111038-r.pom"
|
|
||||||
],
|
|
||||||
"sha256": "a556a9f5adfc6af49b2a12e72dc3cd7e43db8fdc216c0f35885972a2f5ada27d"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.eclipse.jgit",
|
|
||||||
"name": "org.eclipse.jgit-parent",
|
|
||||||
"version": "4.8.0.201706111038-r",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "org.eclipse.jgit-parent-4.8.0.201706111038-r.pom",
|
|
||||||
"path": "org/eclipse/jgit/org.eclipse.jgit-parent/4.8.0.201706111038-r",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/eclipse/jgit/org.eclipse.jgit-parent/4.8.0.201706111038-r/org.eclipse.jgit-parent-4.8.0.201706111038-r.pom"
|
|
||||||
],
|
|
||||||
"sha256": "396a4cc894206873ff107d066a996252b0b47f585b88cf57fc3b31e93d492878"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.slf4j",
|
|
||||||
"name": "slf4j-api",
|
|
||||||
"version": "1.7.2",
|
|
||||||
"type": "jar",
|
|
||||||
"extension": "jar"
|
|
||||||
},
|
|
||||||
"name": "slf4j-api-1.7.2.jar",
|
|
||||||
"path": "org/slf4j/slf4j-api/1.7.2",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar"
|
|
||||||
],
|
|
||||||
"sha256": "3bae789b401333b2a1d1603b7fa573e19908628191707203f6eb708cdee2c052"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.slf4j",
|
|
||||||
"name": "slf4j-api",
|
|
||||||
"version": "1.7.2",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "slf4j-api-1.7.2.pom",
|
|
||||||
"path": "org/slf4j/slf4j-api/1.7.2",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom"
|
|
||||||
],
|
|
||||||
"sha256": "2eaca71afe0a1516f4abd8e9ff907838d268f38c81c3a542cce8d7f3b87c5d4c"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.slf4j",
|
|
||||||
"name": "slf4j-parent",
|
|
||||||
"version": "1.7.2",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "slf4j-parent-1.7.2.pom",
|
|
||||||
"path": "org/slf4j/slf4j-parent/1.7.2",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/slf4j/slf4j-parent/1.7.2/slf4j-parent-1.7.2.pom"
|
|
||||||
],
|
|
||||||
"sha256": "1d8e084a6f2384ade42685332b52a0ece090478641dc14c0fa8c52e1e2984425"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.sonatype.oss",
|
|
||||||
"name": "oss-parent",
|
|
||||||
"version": "5",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "oss-parent-5.pom",
|
|
||||||
"path": "org/sonatype/oss/oss-parent/5",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom"
|
|
||||||
],
|
|
||||||
"sha256": "1678d4120a585d8a630131aeec4c524d928398583b7eab616ee7d5a87f520d3d"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": {
|
|
||||||
"group": "org.sonatype.oss",
|
|
||||||
"name": "oss-parent",
|
|
||||||
"version": "6",
|
|
||||||
"type": "pom",
|
|
||||||
"extension": "pom"
|
|
||||||
},
|
|
||||||
"name": "oss-parent-6.pom",
|
|
||||||
"path": "org/sonatype/oss/oss-parent/6",
|
|
||||||
"urls": [
|
|
||||||
"https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/6/oss-parent-6.pom"
|
|
||||||
],
|
|
||||||
"sha256": "b4306d13e8f5392458a1b30866f1cff161b3d2e6999a88d059eea3932c8a8499"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"plugin": [],
|
|
||||||
"buildscript": [],
|
|
||||||
"project": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,318 +0,0 @@
|
|||||||
# This file is generated by gradle2nix.
|
|
||||||
#
|
|
||||||
# Example usage (e.g. in default.nix):
|
|
||||||
#
|
|
||||||
# with (import <nixpkgs> {});
|
|
||||||
# let
|
|
||||||
# buildGradle = callPackage ./gradle-env.nix {};
|
|
||||||
# in
|
|
||||||
# buildGradle {
|
|
||||||
# envSpec = ./gradle-env.json;
|
|
||||||
#
|
|
||||||
# src = ./.;
|
|
||||||
#
|
|
||||||
# gradleFlags = [ "installDist" ];
|
|
||||||
#
|
|
||||||
# installPhase = ''
|
|
||||||
# mkdir -p $out
|
|
||||||
# cp -r app/build/install/myproject $out
|
|
||||||
# '';
|
|
||||||
# }
|
|
||||||
|
|
||||||
{ stdenv, buildEnv, fetchurl, gradleGen, writeText, writeTextDir }:
|
|
||||||
|
|
||||||
{ envSpec
|
|
||||||
, pname ? null
|
|
||||||
, version ? null
|
|
||||||
, enableParallelBuilding ? true
|
|
||||||
, gradleFlags ? [ "build" ]
|
|
||||||
, gradlePackage ? null
|
|
||||||
, enableDebug ? false
|
|
||||||
, ... } @ args:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (builtins)
|
|
||||||
attrValues concatStringsSep filter fromJSON match replaceStrings sort;
|
|
||||||
|
|
||||||
inherit (stdenv.lib)
|
|
||||||
assertMsg concatMapStringsSep groupBy' hasSuffix last mapAttrs
|
|
||||||
mapAttrsToList optionalString readFile removeSuffix unique versionAtLeast
|
|
||||||
versionOlder;
|
|
||||||
|
|
||||||
mkDep = depSpec: stdenv.mkDerivation {
|
|
||||||
inherit (depSpec) name;
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
inherit (depSpec) urls sha256;
|
|
||||||
};
|
|
||||||
|
|
||||||
phases = "installPhase";
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/${depSpec.path}
|
|
||||||
ln -s $src $out/${depSpec.path}/${depSpec.name}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
mkModuleMetadata = deps:
|
|
||||||
let
|
|
||||||
ids = filter
|
|
||||||
(id: id.type == "pom")
|
|
||||||
(map (dep: dep.id) deps);
|
|
||||||
|
|
||||||
modules = groupBy'
|
|
||||||
(meta: id:
|
|
||||||
let
|
|
||||||
isNewer = versionOlder meta.latest id.version;
|
|
||||||
isNewerRelease =
|
|
||||||
!(hasSuffix "-SNAPSHOT" id.version) &&
|
|
||||||
versionOlder meta.release id.version;
|
|
||||||
in {
|
|
||||||
groupId = id.group;
|
|
||||||
artifactId = id.name;
|
|
||||||
latest = if isNewer then id.version else meta.latest;
|
|
||||||
release = if isNewerRelease then id.version else meta.release;
|
|
||||||
versions = meta.versions ++ [id.version];
|
|
||||||
}
|
|
||||||
)
|
|
||||||
{
|
|
||||||
latest = "";
|
|
||||||
release = "";
|
|
||||||
versions = [];
|
|
||||||
}
|
|
||||||
(id: "${replaceStrings ["."] ["/"] id.group}/${id.name}/maven-metadata.xml")
|
|
||||||
ids;
|
|
||||||
|
|
||||||
in
|
|
||||||
attrValues (mapAttrs (path: meta:
|
|
||||||
let
|
|
||||||
versions' = sort versionOlder (unique meta.versions);
|
|
||||||
in
|
|
||||||
with meta; writeTextDir path ''
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<metadata modelVersion="1.1">
|
|
||||||
<groupId>${groupId}</groupId>
|
|
||||||
<artifactId>${artifactId}</artifactId>
|
|
||||||
<versioning>
|
|
||||||
${optionalString (latest != "") "<latest>${latest}</latest>"}
|
|
||||||
${optionalString (release != "") "<release>${release}</release>"}
|
|
||||||
<versions>
|
|
||||||
${concatMapStringsSep "\n " (v: "<version>${v}</version>") versions'}
|
|
||||||
</versions>
|
|
||||||
</versioning>
|
|
||||||
</metadata>
|
|
||||||
''
|
|
||||||
) modules);
|
|
||||||
|
|
||||||
mkSnapshotMetadata = deps:
|
|
||||||
let
|
|
||||||
snapshotDeps = filter (dep: dep ? build && dep ? timestamp) deps;
|
|
||||||
|
|
||||||
modules = groupBy'
|
|
||||||
(meta: dep:
|
|
||||||
let
|
|
||||||
id = dep.id;
|
|
||||||
isNewer = dep.build > meta.buildNumber;
|
|
||||||
# Timestamp values can be bogus, e.g. jitpack.io
|
|
||||||
updated = if (match "[0-9]{8}\.[0-9]{6}" dep.timestamp) != null
|
|
||||||
then replaceStrings ["."] [""] dep.timestamp
|
|
||||||
else "";
|
|
||||||
in {
|
|
||||||
groupId = id.group;
|
|
||||||
artifactId = id.name;
|
|
||||||
version = id.version;
|
|
||||||
timestamp = if isNewer then dep.timestamp else meta.timestamp;
|
|
||||||
buildNumber = if isNewer then dep.build else meta.buildNumber;
|
|
||||||
lastUpdated = if isNewer then updated else meta.lastUpdated;
|
|
||||||
versions = meta.versions or [] ++ [{
|
|
||||||
classifier = id.classifier or "";
|
|
||||||
extension = id.extension;
|
|
||||||
value = "${removeSuffix "-SNAPSHOT" id.version}-${dep.timestamp}-${toString dep.build}";
|
|
||||||
updated = updated;
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
)
|
|
||||||
{
|
|
||||||
timestamp = "";
|
|
||||||
buildNumber = -1;
|
|
||||||
lastUpdated = "";
|
|
||||||
}
|
|
||||||
(dep: "${replaceStrings ["."] ["/"] dep.id.group}/${dep.id.name}/${dep.id.version}/maven-metadata.xml")
|
|
||||||
snapshotDeps;
|
|
||||||
|
|
||||||
mkSnapshotVersion = version: ''
|
|
||||||
<snapshotVersion>
|
|
||||||
${optionalString (version.classifier != "") "<classifier>${version.classifier}</classifier>"}
|
|
||||||
<extension>${version.extension}</extension>
|
|
||||||
<value>${version.value}</value>
|
|
||||||
${optionalString (version.updated != "") "<updated>${version.updated}</updated>"}
|
|
||||||
</snapshotVersion>
|
|
||||||
'';
|
|
||||||
|
|
||||||
in
|
|
||||||
attrValues (mapAttrs (path: meta:
|
|
||||||
with meta; writeTextDir path ''
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<metadata modelVersion="1.1">
|
|
||||||
<groupId>${groupId}</groupId>
|
|
||||||
<artifactId>${artifactId}</artifactId>
|
|
||||||
<version>${version}</version>
|
|
||||||
<versioning>
|
|
||||||
<snapshot>
|
|
||||||
${optionalString (timestamp != "") "<timestamp>${timestamp}</timestamp>"}
|
|
||||||
${optionalString (buildNumber != -1) "<buildNumber>${toString buildNumber}</buildNumber>"}
|
|
||||||
</snapshot>
|
|
||||||
${optionalString (lastUpdated != "") "<lastUpdated>${lastUpdated}</lastUpdated>"}
|
|
||||||
<snapshotVersions>
|
|
||||||
${concatMapStringsSep "\n " mkSnapshotVersion versions}
|
|
||||||
</snapshotVersions>
|
|
||||||
</versioning>
|
|
||||||
</metadata>
|
|
||||||
''
|
|
||||||
) modules);
|
|
||||||
|
|
||||||
mkRepo = project: type: deps: buildEnv {
|
|
||||||
name = "${project}-gradle-${type}-env";
|
|
||||||
paths = map mkDep deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps;
|
|
||||||
};
|
|
||||||
|
|
||||||
mkInitScript = projectSpec: gradle:
|
|
||||||
let
|
|
||||||
repos = mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies;
|
|
||||||
hasDependencies = mapAttrs (type: deps: deps != []) projectSpec.dependencies;
|
|
||||||
in
|
|
||||||
assert (assertMsg (hasDependencies.settings -> versionAtLeast gradle.version "6.0") ''
|
|
||||||
Project `${projectSpec.name}' has settings script dependencies, such as settings
|
|
||||||
plugins, which are not supported by gradle2nix for Gradle versions prior to 6.0.
|
|
||||||
|
|
||||||
Potential remedies:
|
|
||||||
- Pass `--gradle-version=<version>' to the gradle2nix command.
|
|
||||||
- Patch the `settings.gradle[.kts]' file to remove script dependencies.
|
|
||||||
'');
|
|
||||||
|
|
||||||
writeText "init.gradle" ''
|
|
||||||
static def offlineRepo(RepositoryHandler repositories, String env, String path) {
|
|
||||||
repositories.clear()
|
|
||||||
repositories.maven {
|
|
||||||
name "Nix''${env.capitalize()}MavenOffline"
|
|
||||||
url path
|
|
||||||
metadataSources {
|
|
||||||
it.gradleMetadata()
|
|
||||||
it.mavenPom()
|
|
||||||
it.artifact()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
repositories.ivy {
|
|
||||||
name "Nix''${env.capitalize()}IvyOffline"
|
|
||||||
url path
|
|
||||||
layout "maven"
|
|
||||||
metadataSources {
|
|
||||||
it.gradleMetadata()
|
|
||||||
it.ivyDescriptor()
|
|
||||||
it.artifact()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
${optionalString (hasDependencies.settings && (versionAtLeast gradle.version "6.0")) ''
|
|
||||||
gradle.beforeSettings {
|
|
||||||
offlineRepo(it.buildscript.repositories, "settings", "${repos.settings}")
|
|
||||||
}
|
|
||||||
''}
|
|
||||||
|
|
||||||
${optionalString (hasDependencies.plugin) ''
|
|
||||||
gradle.settingsEvaluated {
|
|
||||||
offlineRepo(it.pluginManagement.repositories, "plugin", "${repos.plugin}")
|
|
||||||
}
|
|
||||||
''}
|
|
||||||
|
|
||||||
${optionalString (hasDependencies.buildscript) ''
|
|
||||||
gradle.projectsLoaded {
|
|
||||||
allprojects {
|
|
||||||
buildscript {
|
|
||||||
offlineRepo(repositories, "buildscript", "${repos.buildscript}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
''}
|
|
||||||
|
|
||||||
${optionalString (hasDependencies.project) ''
|
|
||||||
gradle.projectsLoaded {
|
|
||||||
allprojects {
|
|
||||||
offlineRepo(repositories, "project", "${repos.project}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
''}
|
|
||||||
'';
|
|
||||||
|
|
||||||
mkGradle = gradleSpec:
|
|
||||||
gradleGen.gradleGen {
|
|
||||||
inherit (gradleSpec) nativeVersion;
|
|
||||||
|
|
||||||
name = "gradle-${gradleSpec.version}-${gradleSpec.type}";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
inherit (gradleSpec) url sha256;
|
|
||||||
};
|
|
||||||
} // {
|
|
||||||
inherit (gradleSpec) version;
|
|
||||||
};
|
|
||||||
|
|
||||||
mkProjectEnv = projectSpec: rec {
|
|
||||||
inherit (projectSpec) name path version;
|
|
||||||
gradle = args.gradlePackage or mkGradle projectSpec.gradle;
|
|
||||||
initScript = mkInitScript projectSpec gradle;
|
|
||||||
};
|
|
||||||
|
|
||||||
gradleEnv = mapAttrs
|
|
||||||
(_: p: mkProjectEnv p)
|
|
||||||
(fromJSON (readFile envSpec));
|
|
||||||
|
|
||||||
projectEnv = gradleEnv."";
|
|
||||||
pname = args.pname or projectEnv.name;
|
|
||||||
version = args.version or projectEnv.version;
|
|
||||||
|
|
||||||
buildProject = env: flags: ''
|
|
||||||
gradle --offline --no-daemon --no-build-cache \
|
|
||||||
--info --full-stacktrace --warning-mode=all \
|
|
||||||
${optionalString enableParallelBuilding "--parallel"} \
|
|
||||||
${optionalString enableDebug "-Dorg.gradle.debug=true"} \
|
|
||||||
--init-script ${env.initScript} \
|
|
||||||
${optionalString (env.path != "") ''-p "${env.path}"''} \
|
|
||||||
${concatStringsSep " " flags}
|
|
||||||
'';
|
|
||||||
|
|
||||||
buildIncludedProjects =
|
|
||||||
concatStringsSep "\n" (mapAttrsToList
|
|
||||||
(_: env: buildProject env [ "build" ])
|
|
||||||
(removeAttrs gradleEnv [ "" ]));
|
|
||||||
|
|
||||||
buildRootProject = buildProject projectEnv gradleFlags;
|
|
||||||
|
|
||||||
in stdenv.mkDerivation (args // {
|
|
||||||
|
|
||||||
inherit pname version;
|
|
||||||
|
|
||||||
nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ projectEnv.gradle ];
|
|
||||||
|
|
||||||
buildPhase = args.buildPhase or ''
|
|
||||||
runHook preBuild
|
|
||||||
|
|
||||||
(
|
|
||||||
set -x
|
|
||||||
|
|
||||||
# use the init script here
|
|
||||||
TMPHOME=$(mktemp -d)
|
|
||||||
mkdir -p $TMPHOME/init.d
|
|
||||||
cp ${projectEnv.initScript} $TMPHOME/init.d
|
|
||||||
|
|
||||||
export "GRADLE_USER_HOME=$TMPHOME"
|
|
||||||
${buildIncludedProjects}
|
|
||||||
${buildRootProject}
|
|
||||||
)
|
|
||||||
|
|
||||||
runHook postBuild
|
|
||||||
'';
|
|
||||||
|
|
||||||
dontStrip = true;
|
|
||||||
})
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
startingVersion = '1.0.0'
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
plugins {
|
|
||||||
id "org.jetbrains.kotlin.jvm" version "1.3.50"
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
jcenter()
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
plugins {
|
|
||||||
kotlin("jvm") version "1.3.50"
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
jcenter()
|
|
||||||
}
|
|
||||||
@@ -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")
|
||||||
|
}
|
||||||
@@ -3,7 +3,6 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3,7 +3,6 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Intentionally left empty
|
||||||
@@ -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()
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Intentionally left empty
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
plugins {
|
||||||
|
`java-library`
|
||||||
|
id("com.example.apply-plugin-publish")
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Intentionally left empty
|
||||||
@@ -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")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Intentionally left empty
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Intentionally left empty
|
||||||
@@ -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")
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Intentionally left empty
|
||||||
@@ -3,7 +3,10 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
maven { url = uri("http://localhost:9999") }
|
maven {
|
||||||
|
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
|
||||||
|
allowInsecureProtocol = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
@@ -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")
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Intentionally left empty
|
||||||
@@ -3,7 +3,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
mavenCentral()
|
||||||
maven { url 'https://jitpack.io' }
|
maven { url 'https://jitpack.io' }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3,7 +3,10 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
maven { url = uri("http://localhost:9999") }
|
maven {
|
||||||
|
url = uri(System.getProperty("org.nixos.gradle2nix.m2"))
|
||||||
|
allowInsecureProtocol = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
@@ -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")
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
// Intentionally left empty
|
||||||
13
fixtures/projects/included-build/groovy/build.gradle
Normal file
13
fixtures/projects/included-build/groovy/build.gradle
Normal 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'
|
||||||
|
}
|
||||||
@@ -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'
|
||||||
|
}
|
||||||
@@ -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'
|
||||||
1
fixtures/projects/included-build/groovy/settings.gradle
Normal file
1
fixtures/projects/included-build/groovy/settings.gradle
Normal file
@@ -0,0 +1 @@
|
|||||||
|
includeBuild 'included-child'
|
||||||
@@ -10,5 +10,3 @@ buildscript {
|
|||||||
}
|
}
|
||||||
|
|
||||||
rootProject.name = "settings-buildscript"
|
rootProject.name = "settings-buildscript"
|
||||||
|
|
||||||
//apply plugin: 'net.vivin.gradle-semantic-build-versioning'
|
|
||||||
@@ -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]")
|
||||||
}
|
}
|
||||||
1
fixtures/projects/ivy/basic/kotlin/settings.gradle.kts
Normal file
1
fixtures/projects/ivy/basic/kotlin/settings.gradle.kts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
// Intentionally left empty
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
plugins {
|
||||||
|
id "org.jetbrains.kotlin.jvm" version "1.7.21"
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user