IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Maven Java Discussion :

Maven resources plugin++


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Par défaut Maven resources plugin++
    Bonjour à tous,

    Je connais déjà le plugin "resources" de Maven dont nous nous servons pour injecter des valeurs à la place de tags dans certains fichiers de configuration.

    Nous voudrions aller plus loin en interceptant durant la phase process-resources (?) certains fichiers XML qui seraient passés à une classe métier, "parsés", complétés et renvoyés en sortie pour finir dans target. Un peu comme le plugin ci-avant mais avec une prise en charge complète et dynamique (il ne s'agit pas de simplement injecter des fragments XML).
    Cerise sur le gâteau : notre classe devra scanner les dépendances du projet pour analyser certains JAR du classpath et ainsi déterminer quoi insérer dans la ressource XML qui nous intéresse.

    Est-ce que quelqu'un connaît le bon outil ou les bonnes pratiques pour parvenir à ce résultat, avant que je ne me lance dans le développement d'une usine à gaz ?
    Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 41
    Par défaut
    Bonjour
    A ma connaissance, il n’existe pas de plugins existants qui fassent ce que tu désires. Je pense que ta seule solution est de développer toi-même un plugin maven:

    http://maven.apache.org/guides/plugi...velopment.html

    Un exapmle simple avec classpath lookup:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    /**
     * @goal parse-xml
     * @requiresDependencyResolution
     * @phase process-resources
     */
    public class ExamplePlugin extends AbstractMojo {
     
     
    	/**
             *  @parameter default-value="${project}"
             */
    	private MavenProject project;
     
    	/**
             * Location of the local repository.
             * 
             * @parameter expression="${localRepository}"
             * @readonly
             * @required
             */
    	protected ArtifactRepository localRepository;
     
    	@Override
    	public void execute() throws  MojoFailureException {
     
    		Set<?> artifacts = project.getArtifacts(); // add @requiresDependencyResolution to Goal class
    		for (Iterator<?> artifactIterator = artifacts.iterator(); artifactIterator.hasNext();) {
    			Artifact artifact = (Artifact) artifactIterator.next();
    			System.out.println(artifact.getType());
    			System.out.println(artifact.getArtifactId());
    			System.out.println(" ... ");
    			File artifactfile = new File(localRepository.getBasedir(), localRepository.pathOf(artifact));
    		}
    	}
     
     
    }
    Sinon une libraire utile pour extraire des ressources des fichiers du classpath :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <dependency>
    	<groupId>com.google.classpath-explorer</groupId>
    	<artifactId>classpath-explorer</artifactId>
    	<version>1.0</version>
    </dependency>

  3. #3
    Membre éclairé
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Par défaut
    Bonjour et merci pour les infos,

    J'avoue ne pas bien piger la différence entre getArtifacts et getDependencies voire getDependencyArtifacts, par exemple... Je suis parti sur le second (en utilisant Dependency#getSystemPath) dans un premier temps.
    Dans quels cas privilégier l'un ou l'autre ? A moins que cela ne soit complètement différent ?..

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 41
    Par défaut
    Je ne suis pas exactement sur de ma réponse (cela fais assez longtemps que j'ai utilisé cette méthodes). Mais je crois que getArtifacts t'inclus aussi la liste des "transitive dependencies", alors que getDependencies te retourne seulement ce qu'il y a dans ton pom.

    Si tu utilises getDependencies tu n'auras certainement pas besoin du tag :@requiresDependencyResolution

  5. #5
    Membre éclairé
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Par défaut
    Ok pour la transitivité ; c'est à peu près la seule chose documentée dans l'API, d'ailleurs
    Reste à savoir si c'est Artifact ou Dependency qui correspond le mieux à mon besoin

    Je me demande aussi pourquoi il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new File(this.getRepository().getBasedir(), this.getRepository().pathOf(artifact));
    et pas:

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 41
    Par défaut
    Cela n'a pas fonctionné dans mon cas, mais je te conseille de faire des tests car nos situations sont certainement différentes.

Discussions similaires

  1. maven-resources-plugin : goal resources-copy
    Par decode dans le forum Maven
    Réponses: 8
    Dernier message: 16/11/2010, 10h31
  2. Réponses: 10
    Dernier message: 24/04/2009, 10h40
  3. [maven 2] plugin jar
    Par Lynk HIROSUE dans le forum Maven
    Réponses: 30
    Dernier message: 17/08/2007, 17h23
  4. [Maven 2] plugin changes
    Par hugo123 dans le forum Maven
    Réponses: 25
    Dernier message: 23/08/2006, 15h50
  5. [maven 2] plugin ejb. . . (encore moi. . .)
    Par Lynk HIROSUE dans le forum Maven
    Réponses: 15
    Dernier message: 08/08/2006, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo