Maven: Làm thế nào để đổi tên tệp chiến tranh cho dự án?


91

Tôi có một dự án birdvới các thành phần sau trongpom.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>

và mô-đun web là

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

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

mô-đun web tạo tệp chiến tranh có tên web-1.0-SNAPSHOT.war
Làm sao tôi có thể đổi tên tệp này thành bird.war?


Câu trả lời:


205

Bạn có thể sử dụng phần sau trong mô-đun web tạo ra chiến tranh:

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

Điều này dẫn đến một tệp có tên bird.war sẽ được tạo khi mục tiêu "war: war" được sử dụng.


khi tôi biên dịch dự án của mình với tên "bird.war", tôi nhận được một cuộc chiến có tên là "bird.war.war".
Kalaschni

@Kalaschni chỉ sử dụng 'chim', không 'bird.war' - từng xây dựng các plugin khác nhau thêm phần mở rộng tập tin thích hợp tự động (chiến tranh, jar, tai)
ZachOfAllTrades

11
Hoặc nói chung hơn, chúng ta có thể sử dụng:<finalName>${project.artifactId}</finalName>
Guillaume Husta 23/10/14

Câu trả lời này đã giải quyết vấn đề của tôi trong đó cuộc chiến của mô-đun con được tạo ra với tên của cha mẹ, điều mà tôi không muốn. Vấn đề là phần tử <finalName> đã được đặt trong POM mẹ. Việc xóa phần tử đó dẫn đến tệp chiến tranh được tạo với tên chính xác của mô-đun con.
Oliver Hernandez

Trong IDEA 20156 2.4, tôi gặp phải vấn đề bổ sung là nó tiếp tục tạo tệp chiến tranh cũ mỗi khi tôi cố gắng triển khai trên Payara Glassfish 4.1. Khi điều đó xảy ra, hãy chuyển đến Mở Cài đặt Mô-đun -> Tạo tác -> Bố cục Đầu ra và đổi tên tệp chiến tranh thành kết quả mong muốn của bạn. Tôi cần điều này vì gốc ngữ cảnh thay đổi với tên tệp chiến tranh trong IDEA, điều này gây khó khăn khi bạn có một tệp .properties được định cấu hình khác.
Dr4gon 14/11/16

25

Bạn cần định cấu hình plugin chiến tranh:

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

Thông tin thêm tại đây


11
FYI: Câu trả lời này không còn hợp lệ (kể từ phiên bản maven-war-plugin 3.0.0 trở đi). Xem issue.apache.org/jira/browse/MWAR-373 .
Auke

<warName> hoạt động (ít nhất là trong war-plugin trong 3.2.3) nhưng nó luôn thêm "- <classifier> .war" trong đó <classifier> trống theo mặc định và có thể được đặt bên trong <configuration>. Tôi sử dụng <warName> $ {project.build.finalName} ## $ {buildDateTimeFile} </warName> với "buildDateTimeFile" được đặt bởi build-helper-maven-plugin để tải "myApp ## 2020-05-29_10-24- 00. chiến tranh ”. Điều này đặc biệt hữu ích nếu bạn tạo nhiều tệp chiến tranh (dev / test / prod) trong một lần.
Thies

6

Bạn có thể làm theo bước dưới đây để sửa đổi tên tệp .war nếu bạn đang sử dụng dự án maven.

Mở tệp pom.xml của dự án maven của bạn và chuyển đến thẻ <build></build>,

  1. Trong đó cho biết tên của bạn mong muốn giữa thẻ này: <finalName></finalName>.

    Ví dụ. :<finalName>krutik</finalName>

    Sau khi triển khai .war này, bạn sẽ có thể truy cập url bằng:
    http: // localhost: 8080 / krutik /

  2. Nếu bạn muốn truy cập url có dấu gạch chéo '/' thì bạn sẽ phải chỉ định sau đó đặt tên như dưới đây:

    Ví dụ : <finalName>krutik#maheta</finalName>

    Sau khi triển khai .war này, bạn sẽ có thể truy cập url bằng:
    http: // localhost: 8080 / krutik / maheta


5

Tra cứu pom.xml> thẻ dự án> thẻ xây dựng.

Tôi muốn giải pháp dưới đây.

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

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

Đã làm cho tôi. ^^

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.