2011-12-16 14 views
12

c'è JRE 1.6 disponibile in alcuni repository Maven pubblico abbiamo potuto proxy nel nostro Nexus?JRE 1.6 in repository Maven (pubblico o privato)

in caso contrario, qualcuno può fornire un suggerimento su come distribuire JRE in un repository Maven?

+0

Questo è uno strano requisito. 'JRE' non è esattamente una libreria come' jar'. Non sono sicuro che sia possibile. –

+0

Come ti aspetti esattamente che funzioni? –

+1

Ho bisogno di mettere JRE nella distribuzione nella mia build di maven. Potrei semplicemente scaricarlo come parte del processo di compilazione, ma non c'è alcuna garanzia che Oracle manterrà le distribuzioni JRE nelle stesse posizioni ... è per questo che stavo pensando di inserire JRE nel mio repository di Maven (poiché JRE è una cosa binaria dopo tutti :)). forse questa è una cattiva idea e il download automatico dal sito Oracle sarebbe meglio ... – Alex

risposta

13

ecco la soluzione che ho trovato:

  • Zip il JRE (jre-linux32-1.6.0.23.zip e jre-jre-win32-1.6.0.zip in mio caso).
  • Caricalo nel repository Nexus tramite interfaccia utente Web (o distribuisci manualmente con "mvn"), imposta i parametri degli artefatti: groupid = "oracle" artifactid = "jre-win32"/"jre-linux32", imposta il diritto versione e tipo di imballaggio "zip".
  • modifica il tuo pom.xml per scaricare e decomprimere la dipendenza durante la compilazione (l'ho vincolato alla fase "preparazione-pacchetto").

    <build> 
        <plugins> 
         <plugin> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-dependency-plugin</artifactId> 
          <version>2.4</version> 
          <executions> 
           <execution> 
            <id>copy</id> 
            <phase>prepare-package</phase> 
            <goals> 
             <goal>unpack</goal> 
            </goals> 
            <configuration> 
             <artifactItems> 
              <artifactItem> 
               <groupId>oracle</groupId> 
               <artifactId>jre-win32</artifactId> 
               <version>1.6.0.23</version> 
               <type>zip</type> 
               <overWrite>false</overWrite> 
               <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory> 
               <!--<destFileName>optional-new-name.jar</destFileName>--> 
              </artifactItem> 
              <artifactItem> 
               <groupId>oracle</groupId> 
               <artifactId>jre-linux32</artifactId> 
               <version>1.6.0.23</version> 
               <type>zip</type> 
               <overWrite>false</overWrite> 
               <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory> 
               <!--<destFileName>optional-new-name.jar</destFileName>--> 
              </artifactItem> 
             </artifactItems> 
             <outputDirectory>${project.build.directory}/wars</outputDirectory> 
             <overWriteReleases>false</overWriteReleases> 
             <overWriteSnapshots>true</overWriteSnapshots> 
            </configuration> 
           </execution> 
          </executions> 
         </plugin> 
        </plugins> 
    </build> 
    

il gioco è fatto. Il JRE verrà scaricato ed estratto nella cartella target \ alternateLocation .

è possibile utilizzare l'obiettivo "copia" anziché "decomprimere" se si desidera copiare solo i file ZIP senza estrarli.

+2

Perché non hai usato le classificazioni invece degli artefatti? Dopo tutto i classificatori sono proprio qui per distinguere tra diverse architetture. – Riduidel

-2

Here è possibile leggere come installare un barattolo in un repository Maven. Ma perché vuoi installare i barattoli JRE in un repository Maven?

1

la vostra esigenza è un po 'valida caso d'uso. Ma IMHO, metterlo in un repository non è il modo di farlo.

Altre applicazioni, raggiungere questo requisito ottenendo gli eseguibili direttamente dal fornitore. Per esempio, i server di compilazione come Hudson/Jenkins devono scaricare Java/Maven sulla selezione degli utenti e AFAIR Jenkins li scarica direttamente dal sito Oracle. (Poiché oracle ti chiede di accedere prima del download, usano il meccanismo SSO). Una soluzione simile lungo quel percorso sarebbe adatta a te.

Anche se ospitate il vostro JRE m2-repo ci sono alcuni problemi di sicurezza. JRE è un programma sensibile. Anche se dici di aver ospitato lo stesso JRE di Oracle, preferirei scaricarlo da Oracle.

+0

Grazie per il commento. Sono incline a scaricarlo da Oracle, ma hanno solo file RPM ed EXE, mentre mi serve una versione ZIP. Un'altra opzione per me sarà usare JavaWebStart per distribuire l'app invece di creare un distributore, ma questo è un argomento diverso. – Alex

Problemi correlati