2 votes

Comment passer un paramètre au plugin Maven depuis le CLI ?

<build>
    <plugins>
        <plugin>
            <groupId>org.jvnet.jax-ws-commons</groupId>
            <artifactId>jaxws-maven-plugin</artifactId>
            <version>2.3</version>

            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>wsimport</goal>
                    </goals>
                    <id>generate-sei</id>

                    <configuration>
                        <sourceDestDir>${project.basedir}/src/main/java</sourceDestDir>
                    </configuration>
                </execution>
            </executions>
          <dependencies>...</dependencies>
        </plugin>
    </plugins>
</build>

L'extrait XML ci-dessus provient d'un fichier POM dans un projet Java. Dans cet extrait, j'ai défini le plugin jaxws-maven pour utiliser un fichier wsdl afin de générer le code SEI et le placer dans le répertoire src/main/java. Ce plugin est lié à la phase generate-sources, et fonctionne bien.

Je veux faire en sorte que si j'émets le plugin directement, en utilisant :

mvn jaxws:wsimport

il devrait placer les fichiers dans le dossier mentionné ci-dessus. Depuis le site de référence des plugins ( https://jax-ws-commons.java.net/jaxws-maven-plugin/wsimport-mojo.html ), je n'arrive pas à trouver comment passer le paramètre (sourceDestDir) comme argument de ligne de commande. Y a-t-il un moyen de le faire ?

3voto

Tunaki Points 2663

AVERTISSEMENT /!\

Vous essayez de générer des sources dans le dossier des sources. src/main/java . A moins qu'il n'y ait un muy raison forte, ne faites pas ça . Tout le contenu généré doit toujours être placé sous le répertoire de construction ( target par défaut) et ne sont pas contrôlés par version. Vous pouvez toujours ajouter les sources générées comme dossier source en utilisant l'option build-helper-maven-plugin:add-source si le plugin ne le fait pas déjà lui-même.


Pour pouvoir définir les paramètres directement sur la ligne de commande, le plugin doit définir une propriété utilisateur. Cependant, la propriété org.jvnet.jax-ws-commons:jaxws-maven-plugin ne définit pas de propriété utilisateur pour le sourceDestDir paramètre. Cela se remarque parce que la documentation n'a pas de paramètre "User Property".

Vous pouvez également trouver ceci dans le code source :

@Parameter(defaultValue = "${project.build.directory}/generated-sources/wsimport")
private File sourceDestDir;

El @Parameter utilisée pour déclarer le paramètre du plugin Maven, n'a pas d'annotation correspondante. [property](http://maven.apache.org/plugin-tools-archives/plugin-tools-3.4/apidocs/org/apache/maven/plugins/annotations/Parameter.html#property()) .

À ce titre, vous devrez disposer des éléments suivants :

  1. Définir une propriété Maven jaxws.sourceDestDir avec une valeur de ${project.basedir}/src/main/java avec

    <properties>
      <jaxws.sourceDestDir>${project.basedir}/src/main/java</jaxws.sourceDestDir>
    </properties>

    De préférence, vous avez ${project.build.directory}/some/path au lieu de src/main/java .

  2. Configurer le plugin pour utiliser cette propriété Maven :

    <configuration>
      <sourceDestDir>${jaxws.sourceDestDir}</sourceDestDir>
    </configuration>
  3. Si vous voulez l'ignorer, vous pouvez maintenant le faire directement sur la ligne de commande avec -Djaxws.sourceDestDir=/my/new/value . Cette propriété du système aura la priorité sur la valeur de la propriété Maven.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X