venerdì 11 novembre 2011

Maven, installare un jar nel repository locale

Vediamo in questo post come installare un jar creato da noi nel repository locale di maven, in modo da poterlo poi allegare ad altri progetti semplicemente aggiungendo la dipendenza sul file pom (senza quindi aggiungerlo noi ogni volta tra le lib di progetto).

Per prima cosa dobbiamo assegnare un nome a:
  • groupId: di solito qui si specifica il package del nostro jar, comunque la scelta è libera;
  • artifactId: indica il nome univoco da assegnare all'artefatto, il nome deve essere univoco all'interno del groupId;
  • version;
  • packaging (es JAR,WAR, specifica l'output prodotto da Maven);
 Il jar sarà installato nel percorso M2_REPO/goupId/artifactId/version
Quindi specificare dove è presente il nostro jar file con l'opzione -Dfile=e, in alcuni casi (esempio con Maven 2.2) specificare anche l'opzione

-DgeneratePom=true

In modo da assicurarci che il POM sia generato.

Ipotizzando quindi di avere un progetto Java con una sola classe Test così creata, in un package it.prova:

package it.prova;
public class Test {

      public static void main(String[] args) {
        String v=args[0];
       
        int val=Integer.valueOf(v);
        System.out.println("Il fattoriale è "+getFattoriale((long)val)+"");
    }
    public static long getFattoriale(long n){
        if(n==1 || n==0){
            return 1;
        }
        else
        {
            return n*getFattoriale(n-1);
        }       
    }
}

Da eclipse creiamo il jar test.jar

Quindi da console digitiamo:

C:\>mvn install:install-file -Dfile=c:\test.jar -DgroupId=it.prova -DartifactId=myTest -Dversion=1.0 -Dpackaging=jar  -DgeneratePom=true

La console di esecuzione ci darà un messaggio di questo tipo:

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'install'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]    task-segment: [install:install-file] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [install:install-file {execution: default-cli}]
[INFO] Installing c:\test.jar to C:\Documents and Settings\user\.m2\repos
itory\it\prova\myTest\1.0\myTest-1.0.jar

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Fri Nov 11 13:06:55 CET 2011
[INFO] Final Memory: 3M/15M
[INFO] ------------------------------------------------------------------------

Quindi è possibile verificare che a livello di repository Maven locale è presente la directory evidenziata sopra in grassetto.


Il contenuto della directory è il seguente:


Come possiamo vedere è stato generato anche il pom che è così composto:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>it.prova</groupId>
  <artifactId>myTest</artifactId>
  <version>1.0</version>
  <description>POM was created from install:install-file</description>
</project>


1 commento:

  1. Grazie dell'informazione
    E' possibile dichiararlo dentro al POM che voglio aggiungere il mio JAR nel repository?

    RispondiElimina