Maven: Proje için savaş dosyasını nasıl yeniden adlandırabilirim?


93

birdAşağıdaki bileşenlere sahip bir projem varpom.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>

ve web modülü şu şekilde:

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

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

web modülü, web-1.0-SNAPSHOT.war
maven kullanarak bunu nasıl yeniden adlandırabilirim bird.war? adlı savaş dosyasını oluşturur.


Bu yardımcı olur mu? stackoverflow.com/q/3265544/422353
madth3

Yanıtlar:


209

Savaşı oluşturan web modülünde aşağıdakileri kullanabilirsiniz:

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

Bu, "war: war" hedefi kullanıldığında bird.war adlı bir dosyanın oluşturulmasına yol açar.


projemi "bird.war" adıyla derlediğimde "bird.war.war" adında bir savaşla karşılaşıyorum.
Kalaschni

@Kalaschni, 'bird.war' değil, 'bird' kullanın - çeşitli yapı eklentilerinin her biri uygun dosya uzantısını otomatik olarak ekler (savaş, kavanoz, kulak)
ZachOfAllTrades

11
Veya daha genel olarak şunu kullanabiliriz:<finalName>${project.artifactId}</finalName>
Guillaume Husta

Bu cevap, bir alt modül savaşının, istemediğim ebeveynin adıyla üretildiği sorunumu çözdü. Sorun, <finalName> öğesinin ana POM'da ayarlanmasıydı. Bu öğenin silinmesi, alt modülün doğru adıyla oluşturulan savaş dosyasıyla sonuçlandı.
Oliver Hernandez

IDEA 20156 2.4'te, Payara Glassfish 4.1'e her konuşlandırmaya çalıştığımda eski savaş dosyasını oluşturmaya devam etmesi gibi ek bir sorun yaşadım. Bu olduğunda Modül Ayarlarını Aç -> Yapılar -> Çıktı Düzeni'ne gidin ve savaş dosyasını istediğiniz sonuca göre yeniden adlandırın. Buna ihtiyacım vardı çünkü bağlam kökü, .properties dosyasında farklı yapılandırılmış bir dosyaya sahip olduğunuzda acı veren IDEA'daki savaş dosyası adıyla değişir.
Dr4gon

26

Savaş eklentisini yapılandırmanız gerekiyor:

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

Daha fazla bilgi burada


11
Bilginize: Bu cevap artık geçerli değil (maven-war-eklenti sürüm 3.0.0 ve sonrası). İssue.apache.org/jira/browse/MWAR-373 adresine bakın .
Auke

<warName> çalışır (en azından 3.2.3'teki war eklentisinde) ancak her zaman "- <classifier> .war" ekler; burada <classifier> varsayılan olarak boştur ve <configuration> içinde ayarlanabilir. "MyApp ## 2020-05-29_10-24- almak için build-helper-maven-plugin tarafından" buildDateTimeFile "ayarlı <warName> $ {project.build.finalName} ## $ {buildDateTimeFile} </warName> kullanıyorum 00.war ". Bu, özellikle tek seferde birden fazla savaş dosyası (dev / test / prod) oluşturduğunuzda kullanışlıdır.
Thies

6

Maven projesini kullanıyorsanız .war dosya adını değiştirmek için aşağıdaki adımı takip edebilirsiniz.

Maven projenizin pom.xml dosyasını açın ve etikete gidin <build></build>,

  1. Bu bu etiketi arasında sizin istediğiniz ismi verin: <finalName></finalName>.

    ör. :<finalName>krutik</finalName>

    Bu .war'ı konuşlandırdıktan sonra, URL'ye şu adresten erişebileceksiniz:
    http: // localhost: 8080 / krutik /

  2. URL'ye eğik çizgi '/' ile erişmek istiyorsanız, ardından aşağıdaki adı belirtmeniz gerekecektir:

    örn: <finalName>krutik#maheta</finalName>

    Bu .war'ı konuşlandırdıktan sonra url'ye şu adresten erişebileceksiniz:
    http: // localhost: 8080 / krutik / maheta


5

Lookup pom.xml> proje etiketi> oluşturma etiketi.

Aşağıda çözüm istiyorum.

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

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

Benim için çalıştı. ^^

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.