Як побудувати проект maven без версії?


81

У мене є проект maven, який я хочу побудувати без версії.

Тепер, коли я будую проект за допомогою maven, він створює це, commonjerseylib-1.0.warале мені це потрібноcommonjerseylib.war створити.

На додаток до цього, я видаляю <version>тег з, pom.xmlале все ще створює Maven за допомогоюwar з версією 1.0 за замовчуванням.

Мій pom.xml:

      <modelVersion>4.0.0</modelVersion>
      <groupId>commonjerseylib</groupId>
      <artifactId>commonjerseylib</artifactId>
      <packaging>ear</packaging>
      <name>commonjerseylib</name>
      <!--<version>1.0</version>-->

Як побудувати його без версії?

Відповіді:


169

Для проекту вам завжди знадобиться номер версії, однак можна змінити назву генерованого пакета (JAR, WAR, EAR тощо) через <finalName>елемент у POM.

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

або у старих версіях maven:

        ...
        <finalName>${artifactId}</finalName>
        ...

За замовчуванням finalName є ${project.artifactId}-${project.version}, але це можна змінити на інше. Це вплине лише на назву пакета, створеного в targetкаталозі; ім'я файлу в локальному сховищі та завантажене у віддалені сховища завжди матиме номер версії.

Для отримання додаткової інформації дивіться довідкову документацію POM .


Це ідеально, чітко та чисто!
Томас

7
Принаймні у Maven 3.0.3, $ {artifactId} застаріло на користь $ {project.artifactId}.
Гленн

2
@prunge: Дякую за відповідь. Чи знаєте ви будь-який спосіб зробити це, оскільки це впливає на ім'я файлу в локальному та віддаленому сховищах.
namalfernandolk

Зверніть увагу, що це не працює, щоб замінити його з командного рядка, наприклад -Dproject.build.finalName=whatever- якщо ви хочете мати можливість вказати ім'я банки в командному рядку, див. Stackoverflow.com/a/13877971/587365
Ендрю Спенсер

12

in maven war плагін у побудові, зміні

<warName> ${artifactId} </warName>

        <build>
           ..........
             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <!-- web.xml is not mandatory since JavaEE 5 -->
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <warName>${artifactId}</warName>
                </configuration>
            </plugin>
         .............
       <build>

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