Maven: Comment renommer le fichier war pour le projet?

91

J'ai un projet birdavec les composants suivants danspom.xml

   <groupId>com.myorg</groupId>
    <artifactId>bird</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>bird</name>

    <modules>
        <module>persistence</module>
        <module>business</module>
        <module>service</module>
        <module>web</module>
    </modules>

et le module Web comme

   <parent>
        <artifactId>bird</artifactId>
        <groupId>com.myorg</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>web</artifactId>
    <packaging>war</packaging>  

Le module Web crée le fichier war nommé web-1.0-SNAPSHOT.war
Comment puis-je, en utilisant maven le renommer en bird.war?

rêveur
la source
est-ce que cela aide? stackoverflow.com/q/3265544/422353
madth3

Réponses:

205

Vous pouvez utiliser les éléments suivants dans le module Web qui produit la guerre:

<build>
  <finalName>bird</finalName>
 . . .
</build>

Cela conduit à la création d'un fichier appelé bird.war lorsque le but "war: war" est utilisé.

Sébastien Le Callonnec
la source
quand je compile mon projet avec le nom "bird.war", j'obtiens une guerre nommée "bird.war.war".
Kalaschni
@Kalaschni utilise simplement 'bird', pas 'bird.war' - chacun des différents plugins de construction ajoute automatiquement l'extension de fichier appropriée (guerre, pot, oreille)
ZachOfAllTrades
11
Ou plus généralement, on peut utiliser:<finalName>${project.artifactId}</finalName>
Guillaume Husta
Cette réponse a résolu mon problème où la guerre d'un sous-module était générée avec le nom du parent, ce que je ne voulais pas. Le problème était que l'élément <finalName> était défini dans le POM parent. La suppression de cet élément a entraîné la création du fichier war avec le nom correct du sous-module.
Oliver Hernandez du
Dans IDEA 20156 2.4, j'ai eu le problème supplémentaire de générer l'ancien fichier de guerre à chaque fois que j'essayais de déployer sur un Payara Glassfish 4.1. Lorsque cela se produit, allez dans Paramètres du module ouvert -> Artefacts -> Disposition de sortie et renommez le fichier war selon le résultat souhaité. J'en avais besoin car la racine de contexte change avec le nom du fichier war dans IDEA, ce qui est pénible lorsque vous avez un autre configuré dans le fichier .properties.
Dr4gon
25

Vous devez configurer le plugin war:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <warName>bird.war</warName>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

Plus d'infos ici

Andres Olarte
la source
11
FYI: Cette réponse n'est plus valide (depuis maven-war-plugin version 3.0.0 et suivantes). Voir issues.apache.org/jira/browse/MWAR-373 .
Auke
<warName> fonctionne (au moins dans war-plugin dans 3.2.3) mais il ajoute toujours "- <classifier> .war" où <classifier> est vide par défaut et peut être défini dans <configuration>. J'utilise <warName> $ {project.build.finalName} ## $ {buildDateTimeFile} </warName> avec "buildDateTimeFile" défini par build-helper-maven-plugin pour obtenir "myApp ## 2020-05-29_10-24- 00.war ". Ceci est particulièrement utile si vous créez plusieurs fichiers war (dev / test / prod) en une seule fois.
Thiès
6

Vous pouvez suivre l'étape ci-dessous pour modifier le nom du fichier .war si vous utilisez le projet maven.

Ouvrez le fichier pom.xml de votre projet maven et accédez au tag <build></build>,

  1. Dans ce donner votre nom souhaité entre cette balise: <finalName></finalName>.

    ex. :<finalName>krutik</finalName>

    Après avoir déployé ce .war, vous pourrez accéder à l'URL avec:
    http: // localhost: 8080 / krutik /

  2. Si vous souhaitez accéder à l'url avec une barre oblique '/', vous devrez spécifier le nom comme ci-dessous:

    ex: <finalName>krutik#maheta</finalName>

    Après avoir déployé ce .war, vous pourrez accéder à l'URL avec:
    http: // localhost: 8080 / krutik / maheta

Krutik
la source
5

Recherchez pom.xml> balise de projet> balise de construction.

Je voudrais une solution ci-dessous.

<artifactId>bird</artifactId>
<name>bird</name>

<build>
    ...
    <finalName>${project.artifactId}</finalName>
  OR
    <finalName>${project.name}</finalName>
    ...
</build>

A travaillé pour moi. ^^

Bamossza
la source