mirror of
https://github.com/tadfisher/gradle2nix.git
synced 2026-01-11 23:40:37 -05:00
Apply offline repo on-demand
This commit is contained in:
83
gradle.nix
83
gradle.nix
@@ -214,72 +214,53 @@ let
|
|||||||
paths = finalDependencies;
|
paths = finalDependencies;
|
||||||
};
|
};
|
||||||
|
|
||||||
initScript =
|
initScript = writeText "init.gradle" ''
|
||||||
let
|
import org.gradle.util.GradleVersion
|
||||||
inSettings = pred: script:
|
|
||||||
optionalString pred (
|
static boolean versionAtLeast(String version) {
|
||||||
if versionAtLeast gradle.version "6.0" then ''
|
return GradleVersion.current() >= GradleVersion.version(version)
|
||||||
gradle.beforeSettings {
|
|
||||||
${script}
|
|
||||||
}
|
}
|
||||||
'' else ''
|
|
||||||
gradle.settingsEvaluated {
|
static void configureRepos(RepositoryHandler repositories) {
|
||||||
${script}
|
repositories.configureEach { ArtifactRepository repo ->
|
||||||
}
|
if (repo instanceof MavenArtifactRepository) {
|
||||||
''
|
repo.setArtifactUrls(new HashSet<URI>())
|
||||||
);
|
repo.url 'file:${offlineRepo}'
|
||||||
in
|
repo.metadataSources {
|
||||||
writeText "init.gradle" ''
|
|
||||||
static def offlineRepo(RepositoryHandler repositories) {
|
|
||||||
repositories.clear()
|
|
||||||
repositories.mavenLocal {
|
|
||||||
url 'file:${offlineRepo}'
|
|
||||||
metadataSources {
|
|
||||||
gradleMetadata()
|
gradleMetadata()
|
||||||
mavenPom()
|
mavenPom()
|
||||||
artifact()
|
artifact()
|
||||||
}
|
}
|
||||||
|
} else if (repo instanceof IvyArtifactRepository) {
|
||||||
|
repo.url 'file:${offlineRepo}'
|
||||||
|
repo.layout('maven')
|
||||||
|
repo.metadataSources {
|
||||||
|
gradleMetadata()
|
||||||
|
ivyDescriptor()
|
||||||
|
artifact()
|
||||||
}
|
}
|
||||||
}
|
} else if (repo instanceof UrlArtifactRepository) {
|
||||||
|
repo.url 'file:/homeless-shelter'
|
||||||
${inSettings (versionAtLeast gradle.version "6.0") ''
|
|
||||||
offlineRepo(it.buildscript.repositories)
|
|
||||||
''}
|
|
||||||
|
|
||||||
${inSettings true ''
|
|
||||||
offlineRepo(it.pluginManagement.repositories)
|
|
||||||
''}
|
|
||||||
|
|
||||||
gradle.projectsLoaded {
|
|
||||||
allprojects {
|
|
||||||
buildscript {
|
|
||||||
offlineRepo(repositories)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
${if versionAtLeast gradle.version "6.8"
|
beforeSettings { settings ->
|
||||||
then ''
|
configureRepos(settings.pluginManagement.repositories)
|
||||||
gradle.beforeSettings {
|
configureRepos(settings.buildscript.repositories)
|
||||||
it.dependencyResolutionManagement {
|
if (versionAtLeast("6.8")) {
|
||||||
offlineRepo(repositories)
|
configureRepos(settings.dependencyResolutionManagement.repositories)
|
||||||
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
''
|
|
||||||
else ''
|
beforeProject { project ->
|
||||||
gradle.projectsLoaded {
|
configureRepos(project.buildscript.repositories)
|
||||||
allprojects {
|
configureRepos(project.repositories)
|
||||||
offlineRepo(repositories)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
''
|
|
||||||
}
|
}
|
||||||
|
|
||||||
${extraInit}
|
${extraInit}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
||||||
buildGradlePackage = stdenv.mkDerivation (finalAttrs: {
|
buildGradlePackage = stdenv.mkDerivation (finalAttrs: {
|
||||||
|
|
||||||
inherit buildJdk enableParallelBuilding enableDebug gradle gradleFlags pname version;
|
inherit buildJdk enableParallelBuilding enableDebug gradle gradleFlags pname version;
|
||||||
@@ -295,6 +276,8 @@ let
|
|||||||
(
|
(
|
||||||
set -eux
|
set -eux
|
||||||
|
|
||||||
|
export NIX_OFFLINE_REPO='${offlineRepo}'
|
||||||
|
|
||||||
${optionalString (versionOlder finalAttrs.gradle.version "8.0") ''
|
${optionalString (versionOlder finalAttrs.gradle.version "8.0") ''
|
||||||
# Work around https://github.com/gradle/gradle/issues/1055
|
# Work around https://github.com/gradle/gradle/issues/1055
|
||||||
TMPHOME="$(mktemp -d)"
|
TMPHOME="$(mktemp -d)"
|
||||||
@@ -303,7 +286,7 @@ let
|
|||||||
cp ${initScript} $TMPHOME/
|
cp ${initScript} $TMPHOME/
|
||||||
''}
|
''}
|
||||||
|
|
||||||
gradle --offline --no-daemon --no-build-cache \
|
gradle --offline --no-daemon --no-build-cache --no-watch-fs \
|
||||||
--info --full-stacktrace --warning-mode=all \
|
--info --full-stacktrace --warning-mode=all \
|
||||||
--no-configuration-cache --console=plain \
|
--no-configuration-cache --console=plain \
|
||||||
-Dmaven.repo.local=${offlineRepo} \
|
-Dmaven.repo.local=${offlineRepo} \
|
||||||
|
|||||||
Reference in New Issue
Block a user