Maven - 0xC70FF3/0xC70FF3.github.io GitHub Wiki
apt-get install maven2
Sur les dernières distributions de Netbeans, maven est directement supporté, cependant il faut l'activer : Pour cela, allez dans "Tools -> plugins", puis sur l'onglet "installed", activez l'element "Java Web and EE".
Par défaut, le fichier de configuration de maven se trouve dans /home/username/.m2/settings.xml :
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"
xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
....
<mirrors>
<mirror>
<mirrorOf>*</mirrorOf>
<name>Public Repositories</name>
<url>http://{NEXUS SERVER URL}:8080/nexus-2.0/content/groups/public</url>
<id>public</id>
</mirror>
</mirrors>
....
</settings>
Voila, maintenant tous vos téléchargements maven devraient se faire depuis le repository sélectionné.
Il est possible de disposer de différents artifacts (templates de projet) en fonction du type de logiciel. Il ne reste ensuite plus qu'a les configurer (pom.xml) en y ajoutant les dépendances souhaitées et commencer à coder :) .
### Artifact Swing Pour créer un projet de base, vous pouvez utiliser la commande :
mvn archetype:generate -DarchetypeGroupId=com.yourCompany.artifacts -DarchetypeArtifactId=yourCompany-swing-artifact -DarchetypeVersion=0.1 -DgroupId=com.yourCompany.yourApp -DartifactId=yourApp
Ou bien directement sous Netbeans en créant un project maven et en ajoutant un artifact avec les propriétés :
groupId : com.yourCompany.artifacts
artifactId : yourCompany-swing-artifact
version : 0.1
Pour créer un projet de base, vous pouvez utiliser la commande :
mvn archetype:generate -DarchetypeGroupId=com.yourCompany.artifacts -DarchetypeArtifactId=yourCompany-lib-artifact -DarchetypeVersion=0.1 -DgroupId=com.yourCompany.yourLib -DartifactId=yourLib
Ou bien directement sous Netbeans en créant un project maven et en ajoutent un artifact avec les propriétés :
groupId : com.yourCompany.artifacts
artifactId : yourCompany-lib-artifact
version : 0.1
### Arborescence par défaut d'un projet L'arboresence d'un projet maven est clairement défini. le répertoire src contient l'ensemble des sources.
+-->/
+---->pom.xml # fichier de définition du projet
+---->src/
+------>main/ # sources de l'application
+-------->java/ # les source java
+-------->resources/ # les ressources de l'application
+-------->webroot/ # Racine web des applications webapp (optionnel)
+------>test/ # sources des test
+-------->java/ # sources java des tests
+-------->resources/ # les ressources des tests
Les répertoires java et les ressources sont regroupés à la construction du jar par la suite.
Les numéros de version respectent la convention suivante :
X.x
ou : X : Numero de version majeur : correspond à une évolution majeure du soft. x : Numero de version mineur : evolution normale du soft.
Par exemple : La correction d'un bug ou l'ajout d'une nouvelle fonctionnalité à un soft n'incrémenterait que la version mineur (passant par exemple de 1.1 a 1.2 ou de 1.10 à 1.11).
Une incrémentation de niveau majeur s'accompagne généralement soit :
- d'un changement d'orientation du soft (Finalité modifiée)
- d'une grosse refonte du coeur de l'application
- changement de technologie
- Ajout d'un fonctionnalité qui révolutionne l'utilisation du soft Cette liste n'est pas exhaustive, de nombreux cas peuvent amener à l'utilisation d'un numero de version majeure.
### Cycle de vie du processus de build Maven définit par défaut un certain nombre de phases utilisées dans un build. La plupart ne s'appellent jamais en ligne de commande mais seront impliciement appellés par d'autres. Nous préférons mettre l'ensemble de la configuration dans le fichier de configuration du projet ( pom.xml) plutot que de passer les arguments spécifiques sur la ligne de commande.
#### Nettoyer
mvn clean
#### Compiler et packager son application
mvn package
Pour une application swing-artifact, cette commande permet de créer deux fichiers dans le répertoire target/ nommés ${artifactId}.jar (pour un jar ne contenant que les sources du projet sans les dépendances) et ${artifactId}-jar-with-dependencies.jar (un jar contenant les sources et l'ensemble des dépendances).
Dans le cas d'une librairie, cette commande créé un seul fichier dans le répertoire target/ nommés ${artifactId}.jar.
mvn test
mvn package exec:exec
Cette commande sert a desactiver le profil de build de développement et a utiliser celui de build.
mvn clean package -P build,-dev
Nexus permet de déployer des jars automatiquement. Cependant il faut aussi y mettre ses dépendances, sinon il ne sera pas utilisable. Il faut uploader l'artifact sur le repository : thirdparty
Il faut uploader l'artifact sur le repository : releases
Il est possible de mettre à disposition automatiquement les librairies sur le repo maven à l'aide de la commande :
mvn clean deploy -P build,-dev
Pour ce faire, il faut mettre dans le pom.xml de votre projet :
<distributionManagement>
<repository>
<id>releases</id>
<name>Releases Repository</name>
<url>http://{NEXUS SERVER URL}:8080/nexus-2.0/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot Repository</name>
<url>http://{NEXUS SERVER URL}:8080/nexus-2.0/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
En suite, il faut remplir le fichier de configuration de maven /home/username/.m2/settings.xml avec les identifiants qui vont bien :
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"
xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
....
<servers>
<server>
<id>releases</id>
<username>deployment</username>
<password>deployment</password>
</server>
<server>
<id>snapshots</id>
<username>deployment</username>
<password>deployment</password>
</server>
</servers>
...
</settings>