Brug af Maven bag en proxy
1. Introduktion
I denne vejledning går vi konfigurer Maven til at arbejde bag en proxy - en almindelig situation i miljøer, hvor vi ikke opretter forbindelse direkte til internettet.
I vores eksempel kører vores proxy på maskinen 'proxy.baeldung.com', og den lytter til proxyanmodninger via HTTP på port '80'. Vi bruger også nogle interne websteder på internal.baeldung.com, hvor vi ikke behøver at gennemgå en proxy.
2. Proxy-konfiguration
Først, lad os oprette en grundlæggende proxykonfiguration uden legitimationsoplysninger.
Lad os redigere vores Maven settings.xml normalt findes i vores '/.m2 ′ vejviser. Hvis der ikke er en der endnu, kan vi kopiere den fra de globale indstillinger på '/ conf ' vejviser.
Og lad os nu oprette en indrejse inde i
proxy.baeldung.com 80
Da vi også bruger et lokalt websted, der ikke behøver at gå gennem proxyen, lad os specificere det i ved hjælp af et '|' adskilt liste med vores lokale vært:
internal.baeldung.com | localhost | 127. * | [:: 1]
3. Tilføjelse af legitimationsoplysninger
Hvis vores proxy ikke var sikret, er det alt, hvad vi har brug for; men vores er det lad os tilføje vores legitimationsoplysninger til proxy-definitionen:
baeldung changeme
Vi tilføjer ikke brugernavn / adgangskodeposter, hvis vi ikke har brug for dem - selv tomme - som det at have dem til stede, når proxyen ikke ønsker dem, kan medføre, at vores anmodninger nægtes.
Vores minimale godkendte konfiguration skal nu se sådan ud:
proxy.baeldung.com 80 baeldung changeme internal.baeldung.com | localhost | 127. * | [:: 1]
Nu, når vi kører mvn kommando, vi gennemgår proxyen for at oprette forbindelse til de websteder, vi leder efter.
3.1. Valgfrie poster
Lad os give det valgfrit id af 'BaeldungProxy_Authenticated' for at gøre det lettere at henvise, hvis vi nogensinde har brug for at skifte fuldmagter:
BaeldungProxy_Authenticated
Nu, hvis vi har en anden proxy, kan vi tilføje en anden proxy-definition, men kun en kan være aktiv. Som standard bruger Maven den første aktive proxy-definition, den finder.
Proxy-definitioner er aktive som standard og får den implicitte definition:
rigtigt
Hvis vi ville gøre en anden proxy til den aktive, ville vi deaktivere vores oprindelige post ved at indstille til falsk:
falsk
Mavens standardværdi for proxy-protokollen er HTTP, som er velegnet til de fleste tilfælde. Hvis vores proxy bruger en anden protokol, erklærer vi den her og erstatter den http med den protokol, som vores proxy har brug for:
http
Bemærk, at dette er den protokol, proxyen bruger - protokollen for vores anmodninger (ftp: //, //, //) er uafhængig af dette.
Og her ser vores udvidede proxy-definition ud, inklusive de valgfri elementer:
BaeldungProxy_Authenticated true http proxy.baeldung.com 80 baeldung changeme internal.baeldung.com | localhost | 127. * | [:: 1]
Så det er det for vores grundlæggende proxyindtastning, men er det sikkert nok for os?
4. Sikring af vores konfiguration
Lad os sige, at en af vores kolleger vil have os til at sende dem vores proxykonfiguration.
Vi er ikke så ivrige efter at sende vores adgangskode i almindelig tekst, så lad os se, hvor let Maven gør det at kryptere vores adgangskoder.
4.1. Oprettelse af et hovedadgangskode
Lad os først vælge en hovedadgangskode, sige “te! St! Ma $ ter”.
Nu lad os kryptere vores hovedadgangskode, ved at indtaste det ved prompten, når vi kører:
mvn --encrypt-master-password Hovedadgangskode:
Når vi har trykket på enter, ser vi vores krypterede adgangskode lukket mellem krøllede seler:
{QFMlh / 6WjF8H9po9UDo0Nv18e527jqWb6mUgIB798n4 =}
4.2. Fejlfinding af generering af adgangskode
Hvis vi ser {} i stedet for Masteradgangskode: prompt (dette kan ske, når du bruger bash), så bliver vi nødt til at angive adgangskoden på kommandolinjen.
Lad os indpakke adgangskoden i anførselstegn for at sikre, at specialtegn som '!' ikke har uønskede effekter.
Så lad os bruge enkelte citater, hvis vi bruger bash:
mvn --encrypt-master-password 'te! st! ma $ ter'
Eller brug dobbelt anførselstegn, hvis du bruger en Windows-kommandoprompt:
mvn --encrypt-master-password "te! st! ma $ ter"
Nu, nogle gange indeholder vores genererede hovedadgangskode krøllede seler, som dette eksempel med en lukkende krøllet bøjle, '}', efter 'UD':
{QFMlh / 6WjF8H9po9UD} 0Nv18e527jqWb6mUgIB798n4 =}
I dette tilfælde kan vi enten:
- køre mvn –krypter-master-adgangskode kommando igen for at generere en anden (forhåbentlig uden en krøllet bøjle)
- undslippe de krøllede seler i vores adgangskode ved at tilføje et tilbageslag skrå foran '{' eller ‘}'
4.3. Oprettelse af en indstillinger-sikkerhed.xml Fil
Lad os nu sætte vores krypterede adgangskode med en undslået '\}' i en fil kaldet indstillinger-sikkerhed.xml fil i vores .m2 vejviser:
{QFMlh / 6WjF8H9po9UD \} 0Nv18e527jqWb6mUgIB798n4 =}
Endelig lader Maven os tilføje en kommentar inde i masterelementet.
Lad os tilføje noget tekst før adgangskoden '{' afgrænser, pas på ikke at bruge en {eller} i vores kommentar, da Maven bruger dem til at finde vores adgangskode:
Vi undslap den krøllede bøjle med '\' {QFMlh / 6WjF8H9po9UD \} 0Nv18e527jqWb6mUgIB798n4 =}
4.4. Brug af et aftageligt drev
Lad os sige, at vi skal være ekstra sikre og vil gemme vores hovedadgangskode på en separat enhed.
Først placerer vi vores indstillinger-sikkerhed.xml fil i en konfigurationsmappe på et flytbart drev, “R:”:
R: \ config \ settings-security.xml
Og nu opdaterer vi indstillinger-sikkerhed.xml fil i vores .m2 katalog til at omdirigere Maven til vores virkelige indstillinger-sikkerhed.xml på vores aftagelige drev:
R: \ config \ settings-security.xml
Maven læser nu vores krypterede hovedadgangskode fra den fil, vi specificerede i flytning element, på vores flytbare drev.
5. Kryptering af proxy-adgangskoder
Nu har vi en hovedadgangskode krypteret, det kan vi kryptere vores proxy-adgangskode.
Lad os køre følgende kommando og indtaste vores adgangskode, “ændre mig", ved prompten:
mvn --krypter adgangskode Adgangskode:
Vores krypterede adgangskode vises:
{U2iMf + 7aJXQHRquuQq6MX + n7GOeh97zB9 / 4e7kkEQYs =}
Vores sidste skridt er at rediger proxysektionen i vores settings.xml-fil, og læg vores krypterede adgangskode:
BaeldungProxy_Encrypted proxy.baeldung.com 80 baeldung {U2iMf + 7aJXQHRquuQq6MX + n7GOeh97zB9 / 4e7kkEQYs =}
Gem dette, og Maven skal nu være i stand til at oprette forbindelse til internettet via vores proxy ved hjælp af vores krypterede adgangskoder.
6. Brug af systemegenskaber
Selvom konfiguration af Maven via indstillingsfilen er den anbefalede tilgang, kunne vi erklære vores proxykonfiguration via Java System Properties.
Hvis vores operativsystem allerede har en proxy konfigureret, kan vi indstille:
-Djava.net.useSystemProxies = sandt
Alternativt, så det altid er aktiveret, hvis vi har administratorrettigheder, kan vi indstille dette i vores /lib/net.properties fil.
Lad os dog bemærke, at selvom Maven selv respekterer denne indstilling, gør ikke alle plugins det, så vi kan stadig få mislykkede forbindelser ved hjælp af denne metode.
Selv når det er aktiveret, kan vi tilsidesætte det med indstilling af vores HTTP-proxys detaljer på http.proxyHost systemegenskab:
-Dhttp.proxyHost = proxy.baeldung.com
Vores proxy lytter til standardport 80, men hvis den lyttede til port 8080, ville vi konfigurere http.proxyPort ejendom:
-Dhttp.proxyPort = 8080
Og til vores websteder, der ikke har brug for proxyen:
-Dhttp.nonLocalHosts = "intern.baeldung.com | localhost | 127. * | [:: 1]"
Så hvis vores proxy er 10.10.0.100, kan vi bruge:
mvn kompilere -Dhttp.proxyHost = 10.10.0.100 -Dhttp.proxyPort = 8080 -Dhttp.nonProxyHosts = localhost | 127.0.0.1
Selvfølgelig, hvis vores proxy kræver godkendelse, vi tilføjer også:
-Dhttp.proxyUser = baeldung -Dhttp.proxyPassword = changeme
Og hvis vi ønskede, at nogle af disse indstillinger skulle gælde for alle vores Maven-påkaldelser, kan vi definere dem i MAVEN_OPTS-miljøvariablen:
indstil MAVEN_OPTS = -Dhttp.proxyHost = 10.10.0.100 -Dhttp.proxyPort = 8080
Når vi løbermvn‘Disse indstillinger anvendes automatisk - indtil vi afslutter.
7. Konklusion
I denne artikel konfigurerede vi en Maven-proxy både med og uden legitimationsoplysninger og krypterede vores adgangskode. Vi så, hvordan vi lagrede vores hovedadgangskode på et eksternt drev, og så også på at konfigurere proxyen ved hjælp af systemegenskaber.
Nu kan vi dele vores settings.xml arkiver med vores kolleger uden at give dem vores adgangskoder i almindelig tekst, og vis dem, hvordan de krypterer deres!
Som sædvanligt er eksemplerne i denne artikel tilgængelige på GitHub.