Affichage des articles dont le libellé est MAVEN. Afficher tous les articles
Affichage des articles dont le libellé est MAVEN. Afficher tous les articles

mardi 4 décembre 2018

The Maven artifact for LJUG

You can find Maven archetype, pom parent and artifacts at Maven central

https://mvnrepository.com/search?q=ljug

The gourpID of the LJUG is net.cofares.ljug

Here is the state of deployment today

ort: relevance | popular | newest

An archetype for ISSAE Cnam Liban students for POJO projects. Pre-requisite 1- Must define gpg key for signing jar gpg --gen-key 2- You could olso publish your key gpg- keyserver ___ --send-key ____
Last Release on Nov 29, 2018

A parent pom for ljug projets that allow deploy to maven central using parent pom forDeployCentral staging deploy to sonatype ossrh just use profile ossrh
Last Release on Nov 29, 2018

The maven quickstart archetype adapted for the error with surfire
Last Release on Nov 25, 2018

Liste cicruclaire de taille fixe pour producteur/comsomateur - un prototype : version avec création de tableaux générique. CETTE VERSION (avec le -proto) NE GÈRE PAS LA CONCURENCE
Last Release on Nov 25, 2018

Utilitaire générique pour la gestion de requete et l'affichage de résulat avec JDBC. Do not use this version is just for testing deployemtn to central maven (and for my studnets at Cnam Liban) next versions will be best tested and completed
Last Release on Nov 26, 2018

dimanche 18 octobre 2015

MAVEN en 5 minutes

Pré-requis

Être à l'aise dans la manipulation et l'installation de logiciel dans le système de votre choix. Dans cet article nous utilisons UBUNTU

Installation

Installer MAVEN sur votre système. Par exemple pour UBUNTU "sudo apt-get install  maven". Maven utilise Java (java doit donc être installé aussi)

Si vous souhaiter utiliser la dernière version de maven, et c'est ce que nous vous conseillons, choisissez l'installation "manuelle¨

Télécharger la dernière version ici
Décompresser l'archive dans /opt par exemple
Ajouter le répertoire bin de maven au PATH du système.

Dans notre environnement nous avons ajouté "export PATH=$PATH:/opt/apache-maven-3.3.3/bin/" a la fin du fichier .bashrc

Ouvrir un nouveau terminal et Verifier l'installation 
mvn --version
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T14:57:37+03:00)
Maven home: /opt/apache-maven-3.3.3
Java version: 1.7.0_79, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
Default locale: fr_FR, platform encoding: UTF-8
OS name: "linux", version: "3.19.0-30-generic", arch: "amd64", family: "unix"

Création du premier projet

Voici la commande magique

mvn archetype:generate -DgroupId=net.cofares.app -DartifactId=tuto-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

La première fois, la commande prendra un certain temps, maven va récupérer pour vous, automatiquement, tous les composants (artifact) nécéssaire pour le projet. Ces artifact par la suite serons dans votre dépôt (cache) local. Bien sûe vous avez besoin d'une connection internet lors de l'exécution de cette commande la première fois.

Après un certain nombre de "download" et de configuration automatique. Le projet est prêt. Verifions:

Trace sans les DONLOAD
mvn archetype:generate -DgroupId=net.cofares.tuto -DartifactId=appNo1 -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
[INFO] Scanning for projects...
[INFO]                                                                        
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:2.4:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:2.4:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO]
[INFO] --- maven-archetype-plugin:2.4:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Batch mode
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: net.cofares.tuto
[INFO] Parameter: packageName, Value: net.cofares.tuto
[INFO] Parameter: package, Value: net.cofares.tuto
[INFO] Parameter: artifactId, Value: appNo1
[INFO] Parameter: basedir, Value: /home/pascalfares
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: /home/pascalfares/appNo1
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.397 s
[INFO] Finished at: 2015-10-18T10:31:03+03:00
[INFO] Final Memory: 17M/158M
[INFO] ------------------------------------------------------------------------

et voici ce qui a été créé

cd appNo1/
pascalfares@Sleekbook:~/appNo1$ ls
pom.xml  src
pascalfares@Sleekbook:~/appNo1$ ls -R
.:
pom.xml  src
./src:
main  test
./src/main:
java
./src/main/java:
net
./src/main/java/net:
cofares
./src/main/java/net/cofares:
tuto
./src/main/java/net/cofares/tuto:
App.java
./src/test:
java
./src/test/java:
net
./src/test/java/net:
cofares
./src/test/java/net/cofares:
tuto
./src/test/java/net/cofares/tuto:
AppTest.java

Le répertoire  /src/main/java contient le code source du projet, le répertoire src/test/java contient la source de test, et le fichier pom.xml est le "Project Object Model", ou POM du projet.

Le POM 

Le pom est le fichier essentiel d'un projet MAVEN voici le fichier pom de notre projet
more pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/
2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/
maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>net.cofares.tuto</groupId>
  <artifactId>appNo1</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>appNo1</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

Qu'avons nous fait? 

Vous avez exécuté le but (objectf) archetype:generate, et passé différents paramètres à cet objectif. Le préfixe archetype est le 'plugin' qui contient l'objectif. Si vous êtes familier avec Ant, vous pouvez concevoir cela comme similaire à une tâche. Ce but a créé un projet simple basée sur un archétype. Qu'il suffise de considérer pour l'instant qu'un 'plugin' est une collection de buts avec un but commun général.

Construisons maintenant le résultat (générer l'executable)

mvn package

Cette fois ci nous exécutons une phase de packaging, qui va produire le logiciel au format de packaging correspondant au archetype de notre projet.

Une phase est une étape dans le cycle de vie de la construction, qui est une séquence ordonnée de phases. Lorsqu'une phase est donnée, Maven exécute toutes les étapes dans l'ordre jusqu'à et y compris celle définie.

Le logiciel est prêt essayons le :

java -cp target/appNo1-1.0-SNAPSHOT.jar net.cofares.tuto.App
Hello LJUG!





MAVEN en quelques mots

Qu'est-ce que Maven ? 

Maven est essentiellement un outil de gestion et de compréhension de projet.  Maven offre des fonctionnalités de : construction , compilation ; documentation ; rapport ; gestion des dépendances ; gestion des sources ; mise à jour de projet ; déploiement.

Qu'est-ce que le POM ? 

Le POM (Project Object Model) est une façon de décrire, de manière déclarative, un projet au sens de Maven. Cette description est contenue dans le fichier pom.xml présent dans le repertoire de base du projet. Le fichier pom.xml contient donc tous les éléments permettant de gérer le cycle de vie du projet. project : c'est la balise racine de tous les fichiers pom.xml.

  • modelVersion : cette balise indique la version de POM utilisée. Bien que cette version ne change pas fréquemment, elle est obligatoire afin de garantir la stabilité d'utilisation. 
  • groupId : cette balise permet d'identifier un groupe qui a créé le projet. Cette clé permet d'organiser et de retrouver plus facilement et rapidement le projet. 
  • artifactId : cette balise indique un nom unique utilisé pour nommer les artifacts à construire. packaging : type de packaging du projet ( ex. : JAR, WAR, EAR, etc.). 
  • version : version de l'artifact généré par le projet. 
  • name : nom du projet. 
  • url : adresse du site du projet. 
  • description : description du projet. 
  • dependencies : balise permettant de gérer les dépendances.

Qu'est-ce qu'un archetype ? 

Un archetype est un template de projet. Le fait d'utiliser des archetypes pour initialiser un projet permet de gagner du temps et de respecter une certaine convention. 

Qu'est-ce qu'une dépendance ? 

Une dépendance est une référence vers un artefact spécifique contenu dans un repository (dépôt). Cet artefact est nécessaire pour une ou plusieurs phases du cycle de vie du projet.  L'exemple le plus simple est une dépendance sur une bibliothèque jar qui permet d'en utiliser le contenu dans le projet.

Qu'est-ce qu'un artefact ? 

Dans Maven, un artefact est un élément spécifique issu de la construction du logiciel.  Dans Java, les artefacts les plus communs sont des JARs, mais ce peut être aussi un fichier WAR, un EAR, un ZIP, etc.

Qu'est-ce que le groupId/artifactId ?

Le groupId est l'identifiant du groupe, à l'origine du projet. GroupId suit les mêmes règles de nommage que les packages  Java (exemple : fr.masociete.monprojet), et on choisit généralement comme groupId le nom du top package du projet.  L'artifactId est l'identifiant du projet au sein de ce groupe.  L'artifactId est utilisé par défaut pour construire le nom de l'artefact final (exemple : pour un artifactId=monprojet, le nom du fichier jar généré sera monprojet-version.jar).

Qu'est-ce qu'un SNAPSHOT ? 

Par convention, une version en cours de développement d'un projet voit son numéro de version suivi d'un -SNAPSHOT.  Ainsi un projet en version 2.0-SNAPSHOT signifie que cette version est une pré-version de la version 2.0, en cours de développement.  Ce concept de SNAPSHOT est particulièrement important pour Maven. En effet, dans la gestion des dépendances, Maven va chercher à mettre à jour les versions SNAPSHOT régulièrement pour prendre en compte les derniers développements.  Utiliser une version SNAPSHOT permet de bénéficier des dernières fonctionnalités d'un projet, mais en contrepartie, cette version peut être (et est) appelée à être modifiée de façon importante, sans aucun préavis. 

Qu'est-ce que le repository local, distant ? 

Un repository local est un répertoire sur le poste du développeur permettant de stocker, suivant la même arborescence, tous les artefacts téléchargés depuis le(s) repository distant(s)