Hvordan kan jeg konfigurere et fælles maven repository til Windows og Linux ved hjælp af dropbox?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger både windows og ubuntu til mit Java udviklingsarbejde. Jeg administrerer et fælles arbejdsområde for dem, der bruger dropbox. I ubuntu er min dropbox-mappe placeret i hjemmemappen, mens den i Windows ligger i en separat partition.


Jeg vil have en fælles .m2 mappe til både windows og linux via dropbox. Jeg forstår at ved at ændre nedenstående linje i settings.xml kan jeg nå det:


  <localRepository>${user.home}/dropbox/.m2/repository</localRepository>


Mens dette virker, når dropboxen er angivet i hjemmekatalog for både ubuntu og windows, virker det ikke for mig, da jeg foretrækker at få min dropbox oprettet i en helt anden partition i Windows.


Er der nogen måde jeg kan definere en ny systemvariabel svarende til user.home, f.eks. user.dropbox.home i både Windows og Ubuntu for at opnå det?

Bedste reference


Jeg var endelig i stand til at gøre det ved at indstille brugerdefinerede brugervariabler som nedenfor:


Windows:


\_JAVA\_OPTIONS
-Duser.dropbox.maven=E:Dropboxmaven


Linux:


\_JAVA\_OPTIONS
-Duser.dropbox.maven=/home/creationk/Dropbox/maven


Og settings.xml blev ændret som nedenfor:


<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>${user.dropbox.maven}/.m2/repository</localRepository>
</settings>

Andre referencer 1


Jeg er nysgerrig, hvorfor du vil have en fælles .m2 mappe? Et vigtigt formål med denne mappe er at opretholde et lokalt lager for at eliminere unødvendig netværkstrafik.


Jeg vil advare mod at gøre dit lokale lager ikke så lokalt. Chancerne er, at du vil løbe ind i filkorrektioner og samtidighedsproblemer. Jenkins brugere kan attestere det, omend af forskellige årsager. Dropboxs opdateringsprotokoller vil bare komme i vejen. I stedet for at tænke på .m2 som et lager, tænk på det som en cache.


Hvis det er et fælles depot, du søger, foreslår jeg at se på:



  • Sonatype Nexus Repository Manager

  • JFrog Artifactory

  • Apache's Archiva



[20] [21] [22]


I betragtning af at hensigten med at dele .m2 er at oprette, hvad OP kalder, et universelt arkiv , viser det følgende, hvordan du konfigurerer et filbaseret depot via Dropbox. Lignende teknikker kan anvendes til andre delte filsystemmekanismer (for eksempel CIFS, NFS, etc.) til at distribuere og hente artefakter.


Opret først en privat mappe i din Dropbox-mappe med navnet repo.


Dernæst tilføj følgende <distributionManagement> konfiguration til dit projekt s POM, eller i en forælder POM delt af alle projekter, eller bedre endnu en profil (men det er et andet spørgsmål).


<distributionManagement>
   <repository>
      <id>db-repo</id>
      <url>file:///C:/Users/user/Dropbox/repo</url>
   </repository>
</distributionManagement>


Når du har gjort dette, når du kører mvn deploy, vil de resulterende artefakter blive tilføjet til eller opdateret i dit fælles arkiv. Filepath til depotet vil variere på forskellige systemer. Så længe disse konfigurationer er indstillet globalt i hvert system, skal de kun indstilles en gang.


For at gøre det muligt for de samme og andre projekter at bruge artefakter, der implementeres derunder, skal du tilføje en <repository> -konfiguration for det fælles arkiv.


...
<repositories>
   ...
   <repository>
      <id>db-repo</id>
      <url>file:///C:/Users/user/Dropbox/repo</url>
   </repository>
</repositories>


Et offentligt Dropbox-baseret arkiv kan implementeres på samme måde ved at oprette lagermappen i Dropbox 's Offentlige -mappe. Når du er oprettet, log ind på dit Dropbox-websted og vælg arkivmappen. Brug < strong> Del -knappen for at hente den offentlige webadresse. Denne URL skal bruges til konfigurationen <repository>.


   <repository>
      <id>db-repo</id>
      <url>https://www.dropbox.com/whatever/dropbox/says/it/should/be</url>
   </repository>