Мейвен: Як перейменувати військовий файл для проекту?


91

У мене є проект 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

Відповіді:


205

У веб-модулі, що виробляє війну, можна використовувати наступне:

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

Це призводить до того, що файл під назвою bird.war створюється, коли використовується ціль "війна: війна".


Коли я складаю свій проект з назвою "bird.war", я отримую війну з іменем "bird.war.war".
Калашні

@Kalaschni просто використовуйте 'bird', а не 'bird.war' - кожен з різних плагінів збірки автоматично додає відповідне розширення файлу (війна, jar, вухо)
ZachOfAllTrades

11
Або загальніше, ми можемо використати:<finalName>${project.artifactId}</finalName>
Гійом Хуста

Ця відповідь вирішила мою проблему, коли війна підмодуля породжувалась з іменем батьків, чого я не хотів. Проблема полягала в тому, що елемент <finalName> був встановлений у батьківському POM. Видалення цього елемента призвело до створення файлу війни з правильним ім'ям підмодуля.
Олівер Ернандес,

В IDEA 20156 2.4 у мене була додаткова проблема, що він продовжував генерувати старий військовий файл щоразу, коли я намагався розгорнути на Payara Glassfish 4.1. Коли це трапляється, перейдіть до Відкрити налаштування модуля -> Артефакти -> Вихідний макет і перейменуйте військовий файл на бажаний результат. Мені це знадобилося, тому що кореневий контекст змінюється з іменем файлу війни в IDEA, що болить, коли у вас інший файл налаштовано у .properties.
Dr4gon

25

Вам потрібно налаштувати плагін війни:

<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: Ця відповідь більше не дійсна (починаючи з версії plugin maven-war 3.0.0 і далі). Див. Issues.apache.org/jira/browse/MWAR-373 .
Auke

<warName> працює (принаймні у плагіні війни в 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.війна ". Це особливо корисно, якщо ви створюєте кілька файлів війни (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>

Працював у мене. ^^

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.