Java

Gradle-opslagplaatsen

Gradle-opslagplaatsen
Gradle zoekt naar externe afhankelijkheden in de repositories. Een Gradle-repository is georganiseerd met behulp van groep, naam en versie. Gradle is compatibel met verschillende repository-indelingen zoals Maven en Ivy.

Afhankelijkheidsbeheer in Gradle begrijpen

Opslagplaatsen worden in Gradle gebruikt voor afhankelijkheidsbeheer. Er zijn twee componenten voor Gradle-afhankelijkheden: afhankelijkheden en publicaties van het project.

Wanneer u een project op Gradle bouwt, heeft u waarschijnlijk bibliotheken van andere ontwikkelaars nodig. Stel dat je de Apache Commons Lang-bibliotheek nodig hebt voor speciale tekenreeksmanipulaties. Dus je hebt het nodig in je klassenpad om je code te laten werken. En de Apache Commons Lang heeft mogelijk extra bibliotheken nodig waarvan u niet op de hoogte bent. Met Gradle kun je de specifieke afhankelijkheid vertellen die je project nodig heeft en het zal naar de gespecificeerde repository zoals Maven of Ivy gaan en alle gerelateerde afhankelijkheden uitzoeken en de bestanden downloaden en automatisch voor je instellen.

Gradle heeft ook de mogelijkheid om je artefacten te publiceren. U kunt zelf bepalen wat publicatie voor uw specifieke geval betekent. U kunt het lokaal publiceren of publiceren naar een Maven- of Ivy-repository.

Voorbeeld van Gradle-repository

Stel dat we de StringUtils-klasse uit de Apache Commons Lang-bibliotheek willen gebruiken. Laten we een regisseur als volgt opzetten:

Hallo Wereld
|-- bouwen.gradueel
'-- src
|-- hoofd
'-- java
'-- Hallo Wereld
'-- Hallo Wereld.Java

In de hallowereld.java, je kunt de volgende code plaatsen:

import organisatie.apache.commons.lang3.StringUtils;
openbare klas helloworld
public static void main(String[] args)
String groeten = "Hallo wereld!";
Systeem.uit.println(groeten);
Systeem.uit.println (StringUtils).swapCase (groeten));

En in de opbouw.gradle-bestand kunt u het volgende plaatsen:

plug-in toepassen: 'java'
versie = '1.0'
opslagplaatsen
mavenCentral()

afhankelijkheden
compileergroep: 'org.apache.commons', naam: 'commons-lang3', versie: '3.7'

pot
van configuraties.compileren.verzamel zipTree it

Laten we bespreken wat er gebeurt in het bovenstaande buildscript. Het vertelt Gradle om in de Maven-repository te zoeken naar de commons-lang3-versie 3.7. Het vertelt Gradle ook om de afhankelijkheden in het jar-bestand te verpakken. Als u de uit configuraties verwijdert.compileren.collect zipTree it regel, dan moet u de externe afhankelijkheden opnemen in het klassenpad wanneer u het programma uitvoert.

Nu kunt u vanuit de hoofdmap de build uitvoeren met het commando

$ schaaltje
U zou de volgende resultaten moeten zien:
$ schaaltje
Download https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.7/
commons-lang3-3.7.pom
Download https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/42/
commons-ouder-42.pom
Download https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.7/
commons-lang3-3.7.pot
BOUW SUCCESVOL in 6s
2 bruikbare taken: 1 uitgevoerd, 1 up-to-date

U kunt de build als volgt uitvoeren:

$ java -cp build/libs/helloworld-1.0.pot halloworld
Hallo Wereld!
Hallo Wereld!

Als u de afhankelijkheden niet in uw build had opgenomen, waren de StringUtils-klassen niet opgenomen in uw helloworld-1.0.jar-bestand. En je zou een fout als deze hebben gekregen:

$ java -cp build/libs/helloworld-1.0.pot helloworld
Hallo Wereld!
Uitzondering in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/
StringUtils bij helloworld.hoofd (hallowereld).java:11)
Veroorzaakt door: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils
op java.netto-.URLClassLoader.findClass(URLClassLoader.java:381)
op java.lang.ClassLoader.loadClass(ClassLoader).java:424)
bij zon.diversen.Launcher$AppClassLoader.loadClass(Launcher).java:331)
op java.lang.ClassLoader.loadClass(ClassLoader).java: 357)
… 1 meer

Gradle maakt het u gemakkelijk om uw afhankelijkheden in uw pakket te verpakken.

Conclusie

Het gebruik van Gradle-repository's en afhankelijkhedenfunctionaliteiten kan uw afhankelijkheidsbeheerproces vereenvoudigen. Je hoeft niet alles handmatig bij te houden.

Verdere studie:

Gradle Dependency Management voor Java-projecten

HD Remastered Games voor Linux die nog nooit eerder een Linux-release hebben gehad
Veel game-ontwikkelaars en uitgevers komen met HD-remaster van oude games om de levensduur van franchise te verlengen, fans die compatibiliteit met mo...
Hoe AutoKey te gebruiken om Linux-spellen te automatiseren
AutoKey is een hulpprogramma voor desktopautomatisering voor Linux en X11, geprogrammeerd in Python 3, GTK en Qt. Met behulp van de scripting- en MACR...
Hoe FPS-teller in Linux-games te tonen
Linux-gaming kreeg een grote duw toen Valve in 2012 Linux-ondersteuning voor Steam-client en hun games aankondigde. Sindsdien hebben veel AAA- en indi...