Maven achter een proxy gebruiken

1. Inleiding

In deze tutorial gaan we configureer Maven om achter een proxy te werken - een veel voorkomende situatie in omgevingen waar we niet rechtstreeks verbinding maken met internet.

In ons voorbeeld draait onze proxy op de machine ‘proxy.baeldung.com 'en luistert hij naar proxyverzoeken via HTTP op poort' 80 '. We zullen ook enkele interne sites op internal.baeldung.com gebruiken waar we niet via een proxy hoeven te gaan.

2. Proxyconfiguratie

Eerste, laten we een basis proxyconfiguratie opzetten zonder enige inloggegevens.

Laten we onze Maven bewerken settings.xml meestal te vinden in onze ‘/.m2 ′ directory. Als er nog geen is, kunnen we deze kopiëren vanuit de algemene instellingen op ‘/ conf ' directory.

En laten we nu een binnenkomst in de sectie:

  proxy.baeldung.com 80 

Omdat we ook een lokale site gebruiken die niet via de proxy hoeft te gaan, laten we deze specificeren in met een ‘| ' gescheiden lijst met onze localhost:

internal.baeldung.com | localhost | 127. * | [:: 1] 

3. Inloggegevens toevoegen

Als onze proxy niet beveiligd was, is dat alles wat we nodig hebben; de onze is echter zo laten we onze inloggegevens toevoegen aan de proxydefinitie:

baeldung changeme 

We voegen geen gebruikersnaam / wachtwoord toe als we ze niet nodig hebben - zelfs lege - als ze aanwezig zijn wanneer de proxy ze niet wil, kan onze verzoeken worden geweigerd.

Onze minimaal geverifieerde configuratie zou er nu als volgt uit moeten zien:

  proxy.baeldung.com 80 baeldung changeme internal.baeldung.com | localhost | 127. * | [:: 1] 

Nu, wanneer we het mvn commando gaan we door de proxy om verbinding te maken met de sites die we zoeken.

3.1. Optionele vermeldingen

Laten we het het optionele geven ID kaart van ‘BaeldungProxy_Authenticated 'om het gemakkelijker te maken om naar te verwijzen, voor het geval we ooit van proxy's moeten wisselen:

BaeldungProxy_Authenticated

Als we nu een andere proxy hebben, kunnen we nog een proxydefinitie toevoegen, maar er kan er maar één actief zijn. Maven gebruikt standaard de eerste actieve proxydefinitie die wordt gevonden.

Proxydefinities zijn standaard actief en krijgen de impliciete definitie:

waar

Als we een andere proxy de actieve wilden maken, zouden we onze oorspronkelijke invoer deactiveren door in te stellen naar false:

false

De standaardwaarde van Maven voor het proxy-protocol is HTTP, wat in de meeste gevallen geschikt is. Als onze proxy een ander protocol gebruikt, zouden we dit hier aangeven en vervangen http met het protocol dat onze proxy nodig heeft:

http

Merk op dat dit het protocol is dat de proxy gebruikt - het protocol van onze verzoeken (ftp: //, //, //) is hiervan onafhankelijk.

En hier is hoe onze uitgebreide proxydefinitie eruit ziet, inclusief de optionele elementen:

  BaeldungProxy_Authenticated true http proxy.baeldung.com 80 baeldung changeme internal.baeldung.com | localhost | 127. * | [:: 1] 

Dus dat is het voor onze standaard proxy-invoer, maar is het veilig genoeg voor ons?

4. Beveiliging van onze configuratie

Laten we nu zeggen dat een van onze collega's wil dat we hen onze proxyconfiguratie sturen.

We zijn niet zo happig om ons wachtwoord in platte tekst te verzenden, dus laten we eens kijken hoe gemakkelijk Maven het maakt om onze wachtwoorden te versleutelen.

4.1. Een hoofdwachtwoord aanmaken

Laten we eerst een hoofdwachtwoord kiezen, zeg "te! St! Ma $ ter".

Nu laten we ons hoofdwachtwoord versleutelen, door het in te voeren bij de prompt wanneer we het volgende uitvoeren:

mvn --encrypt-master-password Hoofdwachtwoord: 

Nadat we op enter hebben gedrukt, zien we ons gecodeerde wachtwoord tussen accolades:

{QFMlh / 6WjF8H9po9UDo0Nv18e527jqWb6mUgIB798n4 =}

4.2. Problemen met het genereren van wachtwoorden oplossen

Als we {} zien in plaats van de Master wachtwoord: prompt (dit kan gebeuren bij gebruik van bash), dan moeten we het wachtwoord specificeren op de opdrachtregel.

Laten we het wachtwoord tussen aanhalingstekens plaatsen om ervoor te zorgen dat speciale tekens zoals ‘! ' hebben geen ongewenste effecten.

Dus laten we enkele aanhalingstekens gebruiken als we bash gebruiken:

mvn --encrypt-master-wachtwoord 'te! st! ma $ ter'

Of gebruik dubbele aanhalingstekens als u een Windows-opdrachtprompt gebruikt:

mvn --encrypt-master-password "te! st! ma $ ter"

Nu, soms bevat ons gegenereerde hoofdwachtwoord accolades, zoals in dit voorbeeld met een sluitende accolade, ‘} ', na de‘ UD':

{QFMlh / 6WjF8H9po9UD} 0Nv18e527jqWb6mUgIB798n4 =}

In dit geval kunnen we:

  • voer de ... uit mvn –encrypt-master-wachtwoord opdracht opnieuw om een ​​andere te genereren (hopelijk zonder een accolade)
  • ontsnappen aan de accolades in ons wachtwoord door een backslash toe te voegen voor de ‘{’ of }'

4.3. Een settings-security.xml het dossier

Laten we nu ons versleutelde wachtwoord, met een ontsnapte ‘\} ', in een bestand met de naam settings-security.xml bestand in ons .m2 directory:

 {QFMlh / 6WjF8H9po9UD \} 0Nv18e527jqWb6mUgIB798n4 =} 

Ten slotte kunnen we met Maven een opmerking toevoegen in het masterelement.

Laten we wat tekst toevoegen vóór het wachtwoord ‘{‘ scheidingsteken, waarbij we ervoor zorgen dat we geen {of} gebruiken in onze opmerking, aangezien Maven ze gebruikt om ons wachtwoord te vinden:

We zijn aan de accolade ontsnapt met '\' {QFMlh / 6WjF8H9po9UD \} 0Nv18e527jqWb6mUgIB798n4 =}

4.4. Een verwisselbare schijf gebruiken

Laten we zeggen dat we extra veilig moeten zijn en ons hoofdwachtwoord op een apart apparaat wilt opslaan.

Eerst plaatsen we onze settings-security.xml bestand in een configuratiemap op een verwisselbare schijf, "R:":

R: \ config \ settings-security.xml

En nu zullen we het settings-security.xml bestand in ons .m2 directory om Maven om te leiden naar onze real settings-security.xml op onze verwisselbare schijf:

   R: \ config \ settings-security.xml 

Maven leest nu ons gecodeerde hoofdwachtwoord uit het bestand dat we hebben gespecificeerd in het verhuizing element, op onze verwisselbare schijf.

5. Proxywachtwoorden versleutelen

Nu hebben we een gecodeerd hoofdwachtwoord, dat kunnen we versleutel ons proxy-wachtwoord.

Laten we de volgende opdracht uitvoeren en ons wachtwoord invoeren: "verander mij", bij de prompt:

mvn --encrypt-password Wachtwoord:

Ons gecodeerde wachtwoord wordt weergegeven:

{U2iMf + 7aJXQHRquuQq6MX + n7GOeh97zB9 / 4e7kkEQYs =}

Onze laatste stap is om bewerk de proxy-sectie in ons settings.xml-bestand en voer ons versleutelde wachtwoord in:

  BaeldungProxy_Encrypted proxy.baeldung.com 80 baeldung {U2iMf + 7aJXQHRquuQq6MX + n7GOeh97zB9 / 4e7kkEQYs =} 

Bewaar dit, en Maven zou nu verbinding met internet moeten kunnen maken via onze proxy, met behulp van onze gecodeerde wachtwoorden.

6. Systeemeigenschappen gebruiken

Hoewel het configureren van Maven via het instellingenbestand is de aanbevolen aanpak, konden we onze proxyconfiguratie aangeven via Java System Properties.

Als ons besturingssysteem al een proxy heeft geconfigureerd, kunnen we het volgende instellen:

-Djava.net.useSystemProxies = waar

Als alternatief, zodat het altijd is ingeschakeld, als we beheerdersrechten hebben, kunnen we dit instellen in onze /lib/net.properties het dossier.

Houd er echter rekening mee dat, hoewel Maven zelf deze instelling respecteert, niet alle plug-ins dat doen, dus we kunnen nog steeds mislukte verbindingen krijgen met deze methode.

Zelfs wanneer ingeschakeld, kunnen we het overschrijven door het instellen van de details van onze HTTP-proxy op het http.proxyHost systeemeigenschap:

-Dhttp.proxyHost = proxy.baeldung.com

Onze proxy luistert op de standaardpoort 80, maar als hij op poort 8080 luisterde, zouden we dat doen configureer het http.proxyPort eigendom:

-Dhttp.proxyPort = 8080

En voor onze sites die de proxy niet nodig hebben:

-Dhttp.nonLocalHosts = "internal.baeldung.com | localhost | 127. * | [:: 1]"

Dus als onze proxy op 10.10.0.100 staat, kunnen we gebruiken:

mvn compileren -Dhttp.proxyHost = 10.10.0.100 -Dhttp.proxyPort = 8080 -Dhttp.nonProxyHosts = localhost | 127.0.0.1

Natuurlijk, als onze proxy authenticatie vereist, we zullen ook toevoegen:

-Dhttp.proxyUser = baeldung -Dhttp.proxyPassword = wijzigingsprogramma

En als we wilden dat sommige van deze instellingen van toepassing waren op al onze Maven-aanroepen, kunnen we ze definiëren in de omgevingsvariabele MAVEN_OPTS:

stel MAVEN_OPTS = -Dhttp.proxyHost = 10.10.0.100 -Dhttp.proxyPort = 8080 in

Nu, wanneer we rennen ‘mvn‘Deze instellingen worden automatisch toegepast - totdat we afsluiten.

7. Conclusie

In dit artikel hebben we een Maven-proxy geconfigureerd, zowel met als zonder inloggegevens, en hebben we ons wachtwoord versleuteld. We hebben gezien hoe we ons hoofdwachtwoord op een externe schijf kunnen opslaan, en we hebben ook gekeken naar het configureren van de proxy met behulp van systeemeigenschappen.

Nu kunnen we onze settings.xml bestand met onze collega's zonder ze onze wachtwoorden in platte tekst te geven, en laat ze zien hoe ze die van hen kunnen versleutelen!

Zoals gewoonlijk zijn de voorbeelden in dit artikel beschikbaar op GitHub.


$config[zx-auto] not found$config[zx-overlay] not found