Maven: Wie benenne ich die Kriegsdatei für das Projekt um?

91

Ich habe ein Projekt birdmit folgenden Komponenten inpom.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>

und das Webmodul als

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

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

Das Webmodul erstellt die Kriegsdatei mit dem Namen web-1.0-SNAPSHOT.war
Wie kann ich diese mithilfe von Maven umbenennen bird.war?

Tagträumer
quelle

Antworten:

202

Im Webmodul, das den Krieg erzeugt, können Sie Folgendes verwenden:

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

Dies führt dazu, dass eine Datei namens bird.war erstellt wird, wenn das Ziel "war: war" verwendet wird.

Sébastien Le Callonnec
quelle
Wenn ich mein Projekt mit dem Namen "bird.war" kompiliere, bekomme ich einen Krieg mit dem Namen "bird.war.war".
Kalaschni
@ Kalaschni benutze einfach 'bird', nicht 'bird.war' - jedes der verschiedenen Build-Plugins fügt automatisch die entsprechende Dateierweiterung hinzu (war, jar, ear)
ZachOfAllTrades
11
Oder allgemeiner können wir verwenden:<finalName>${project.artifactId}</finalName>
Guillaume Husta
Diese Antwort löste mein Problem, bei dem der Krieg eines Submoduls mit dem Namen des Elternteils erzeugt wurde, was ich nicht wollte. Das Problem war, dass das Element <finalName> im übergeordneten POM festgelegt wurde. Das Löschen dieses Elements führte dazu, dass die War-Datei mit dem korrekten Namen des Submoduls generiert wurde.
Oliver Hernandez
In IDEA 20156 2.4 hatte ich das zusätzliche Problem, dass die alte Kriegsdatei jedes Mal generiert wurde, wenn ich versuchte, sie auf einem Payara Glassfish 4.1 bereitzustellen. Gehen Sie in diesem Fall zu Open Module Settings -> Artifacts -> Output Layout und benennen Sie die War-Datei in das gewünschte Ergebnis um. Ich brauchte dies, weil sich der Kontextstamm mit dem Namen der War-Datei in IDEA ändert. Dies ist ein Problem, wenn Sie eine andere in der .properties-Datei konfigurierte Datei haben.
Dr4gon
25

Sie müssen das Kriegs-Plugin konfigurieren:

<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>

Mehr Infos hier

Andres Olarte
quelle
10
Zu Ihrer Information: Diese Antwort ist nicht mehr gültig (seit Maven-War-Plugin Version 3.0.0 und höher). Siehe Issues.apache.org/jira/browse/MWAR-373 .
Auke
<warName> funktioniert (zumindest im War-Plugin in 3.2.3), hängt jedoch immer "- <Klassifizierer> .war" an, wobei <Klassifizierer> standardmäßig leer ist und in <Konfiguration> festgelegt werden kann. Ich verwende <warName> $ {project.build.finalName} ## $ {buildDateTimeFile} </ warName> mit "buildDateTimeFile", das vom build-helper-maven-plugin festgelegt wurde, um "myApp ## 2020-05-29_10-24-" zu erhalten 00.war ". Dies ist besonders nützlich, wenn Sie mehrere War-Dateien (dev / test / prod) auf einmal erstellen.
Thies
6

Sie können den folgenden Schritt ausführen, um den .war-Dateinamen zu ändern, wenn Sie ein Maven-Projekt verwenden.

Öffnen Sie die Datei pom.xml Ihres Maven-Projekts und gehen Sie zum Tag <build></build>.

  1. Geben Sie dabei Ihren gewünschten Namen zwischen diesem Tag an : <finalName></finalName>.

    Ex. ::<finalName>krutik</finalName>

    Nach der Bereitstellung dieser .war-Datei können Sie auf die URL zugreifen mit:
    http: // localhost: 8080 / krutik /

  2. Wenn Sie auf die URL mit dem Schrägstrich '/' zugreifen möchten, müssen Sie den folgenden Namen angeben:

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

    Nach der Bereitstellung dieser .war-Datei können Sie auf die URL zugreifen mit:
    http: // localhost: 8080 / krutik / maheta

Krutik
quelle
5

Suchen Sie nach pom.xml> Projekt-Tag> Build-Tag.

Ich möchte unten eine Lösung.

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

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

Hat für mich gearbeitet. ^^

Bamossza
quelle