Maven: จะเปลี่ยนชื่อไฟล์ war สำหรับโครงการได้อย่างไร?


93

ฉันมีโครงการที่birdมีส่วนประกอบต่อไปนี้ในpom.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>

และโมดูลเว็บเป็น

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

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

เว็บโมดูลสร้างไฟล์สงครามชื่อweb-1.0-SNAPSHOT.war
ฉันจะใช้ maven เปลี่ยนชื่อเป็นได้bird.warอย่างไร


สิ่งนี้ช่วยได้หรือไม่? stackoverflow.com/q/3265544/422353
madth3

คำตอบ:


211

คุณสามารถใช้สิ่งต่อไปนี้ในเว็บโมดูลที่สร้างสงคราม:

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

สิ่งนี้นำไปสู่ไฟล์ที่เรียกว่า bird.war ที่จะสร้างขึ้นเมื่อใช้เป้าหมาย "war: war"


เมื่อฉันรวบรวมโปรเจ็กต์ของฉันด้วยชื่อ "bird.war" ฉันได้รับสงครามที่ชื่อ "bird.war.war"
Kalaschni

@Kalaschni เพียงใช้ 'bird' ไม่ใช่ 'bird.war' - แต่ละปลั๊กอิน build ต่างๆจะเพิ่มนามสกุลไฟล์ที่เหมาะสมโดยอัตโนมัติ (war, jar, ear)
ZachOfAllTrades

11
หรือโดยทั่วไปเราสามารถใช้:<finalName>${project.artifactId}</finalName>
Guillaume Husta

คำตอบนี้ช่วยแก้ปัญหาของฉันที่สงครามของโมดูลย่อยถูกสร้างขึ้นโดยใช้ชื่อผู้ปกครองซึ่งฉันไม่ต้องการ ปัญหาคือองค์ประกอบ <finalName> ถูกตั้งค่าใน POM หลัก การลบองค์ประกอบนั้นส่งผลให้ไฟล์ war สร้างขึ้นด้วยชื่อที่ถูกต้องของโมดูลย่อย
Oliver Hernandez

ใน IDEA 20156 2.4 ฉันมีปัญหาเพิ่มเติมที่มันสร้างไฟล์สงครามเก่าทุกครั้งที่ฉันพยายามปรับใช้กับ Payara Glassfish 4.1 เมื่อเป็นเช่นนั้นให้ไปที่ Open Module Settings -> Artifacts -> Output Layout และเปลี่ยนชื่อไฟล์ war เป็นผลลัพธ์ที่คุณต้องการ ฉันต้องการสิ่งนี้เนื่องจากรูทบริบทเปลี่ยนด้วยชื่อไฟล์ war ใน IDEA ซึ่งเป็นความเจ็บปวดเมื่อคุณมีการกำหนดค่าอื่นในไฟล์. คุณสมบัติ
Dr4gon

26

คุณต้องกำหนดค่าปลั๊กอินสงคราม:

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

ข้อมูลเพิ่มเติมที่นี่


11
FYI: คำตอบนี้ใช้ไม่ได้อีกต่อไป (ตั้งแต่ maven-war-plugin เวอร์ชัน 3.0.0 ขึ้นไป) ดูissues.apache.org/jira/browse/MWAR-373
Auke

<warName> ใช้งานได้ (อย่างน้อยใน war-plugin ใน 3.2.3) แต่จะต่อท้าย "- <classifier> .war" เสมอโดยที่ <classifier> ว่างเปล่าตามค่าเริ่มต้นและสามารถตั้งค่าภายใน <configuration> ได้ ฉันใช้ <warName> $ {project.build.finalName} ## $ {buildDateTimeFile} </warName> กับ "buildDateTimeFile" ที่ตั้งค่าโดย build-helper-maven-plugin เพื่อรับ "myApp ## 2020-05-29_10-24- 00.war ". สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณสร้างไฟล์ war หลายไฟล์ (dev / test / prod) ในครั้งเดียว
Thies

6

คุณสามารถทำตามขั้นตอนด้านล่างเพื่อแก้ไขชื่อไฟล์. war หากคุณใช้โครงการ maven

ไฟล์ pom.xml เปิดโครงการ Maven คุณและไปที่แท็ก<build></build>,

  1. ในนั้นให้ชื่อที่คุณต้องการระหว่างแท็กนี้: <finalName></finalName>.

    เช่น :<finalName>krutik</finalName>

    หลังจากปรับใช้. war นี้คุณจะสามารถเข้าถึง url ด้วย:
    http: // localhost: 8080 / krutik /

  2. หากคุณต้องการเข้าถึง url ด้วยเครื่องหมายทับ'/'คุณจะต้องระบุจากนั้นตั้งชื่อตามด้านล่าง:

    เช่น: <finalName>krutik#maheta</finalName>

    หลังจากปรับใช้. war นี้คุณจะสามารถเข้าถึง url ด้วย:
    http: // localhost: 8080 / krutik / maheta


5

ค้นหา pom.xml> แท็กโครงการ> สร้างแท็ก

ฉันต้องการวิธีแก้ปัญหาด้านล่าง

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

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

ทำงานให้ฉัน ^^

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.