Maven: Bagaimana cara mengganti nama file perang untuk proyek tersebut?


93

Saya memiliki proyek birddengan komponen berikut dalampom.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>

dan modul web sebagai

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

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

modul web membuat file perang bernama web-1.0-SNAPSHOT.war
Bagaimana saya bisa, menggunakan maven mengubah nama ini menjadi bird.war?


Jawaban:


209

Anda dapat menggunakan yang berikut di modul web yang menghasilkan perang:

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

Ini mengarah ke file bernama bird.war yang akan dibuat saat tujuan "perang: perang" digunakan.


ketika saya menyusun proyek saya dengan nama "bird.war" saya mendapatkan perang yang bernama "bird.war.war".
Kalaschni

@Kalaschni cukup gunakan 'bird', bukan 'bird.war' - masing-masing dari berbagai plugin build menambahkan ekstensi file yang sesuai secara otomatis (war, jar, ear)
ZachOfAllTrade

11
Atau lebih umum, kita dapat menggunakan:<finalName>${project.artifactId}</finalName>
Guillaume Husta

Jawaban ini memecahkan masalah saya di mana perang submodul yang dihasilkan dengan nama orang tua, yang tidak saya inginkan. Masalahnya adalah elemen <finalName> disetel di POM induk. Menghapus elemen itu mengakibatkan file perang dibuat dengan nama submodul yang benar.
Oliver Hernandez

Dalam IDEA 20156 2.4 saya memiliki masalah tambahan yang terus menghasilkan file perang lama setiap kali saya mencoba menerapkan pada Payara Glassfish 4.1. Ketika itu terjadi, pergi ke Buka Pengaturan Modul -> Artefak -> Tata Letak Output dan ganti nama file perang ke hasil yang Anda inginkan. Saya membutuhkan ini karena akar konteks berubah dengan nama file perang di IDEA yang merepotkan ketika Anda memiliki konfigurasi yang berbeda di file .properties.
Dr4gon

26

Anda perlu mengkonfigurasi plugin perang:

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

Info selengkapnya di sini


11
FYI: Jawaban ini tidak lagi valid (sejak maven-war-plugin versi 3.0.0 dan seterusnya). Lihat issues.apache.org/jira/browse/MWAR-373 .
Auke

<warName> berfungsi (setidaknya di war-plugin di 3.2.3) tetapi selalu menambahkan "- <classifier> .war" di mana <classifier> kosong secara default dan dapat disetel di dalam <configuration>. Saya menggunakan <warName> $ {project.build.finalName} ## $ {buildDateTimeFile} </warName> dengan "buildDateTimeFile" yang disetel oleh build-helper-maven-plugin untuk mendapatkan "myApp ## 2020-05-29_10-24- 00. perang ". Ini sangat berguna jika Anda membuat beberapa file perang (dev / test / prod) sekaligus.
Thies

6

Anda dapat mengikuti langkah di bawah ini untuk mengubah nama file .war jika Anda menggunakan proyek maven.

Buka file pom.xml proyek maven Anda dan buka tag <build></build>,

  1. Dalam memberikan nama yang Anda inginkan antara tag ini: <finalName></finalName>.

    ex. :<finalName>krutik</finalName>

    Setelah menerapkan .war ini Anda akan dapat mengakses url dengan:
    http: // localhost: 8080 / krutik /

  2. Jika Anda ingin mengakses url dengan garis miring '/' maka Anda harus menentukan nama seperti di bawah ini:

    mis .: <finalName>krutik#maheta</finalName>

    Setelah menerapkan .war ini, Anda akan dapat mengakses url dengan:
    http: // localhost: 8080 / krutik / maheta


5

Cari pom.xml> tag proyek> tag build.

Saya ingin solusi di bawah ini.

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

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

Bekerja untuk saya. ^^

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.