ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Корректировка finalName в Maven: проблема и решение

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы изменить стандартное имя файла jar в Maven, добавьте в pom.xml следующий тег <finalName>:

xml
Скопировать код
<build>
    <finalName>НовоеИмяФайла</finalName>
</build>

Замените НовоеИмяФайла на желаемое имя. Не нужно добавлять суффикс .jar — о его присутствии позаботится сам Maven.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Работа с Maven 3.x

Начиная с версии 3.0.0, Maven отлично поддерживает конфигурацию <finalName> внутри тега <build>. Однако обратите внимание: известные баги могут привести к непредсказуемым результатам, поэтому всегда проверяйте результаты сборки:

xml
Скопировать код
<build>
    <finalName>Багобоб-${project.version}</finalName>
</build>

Совместимость со старыми версиями Maven

Если вы по-прежнему работаете со старыми версиями Maven, настройте maven-jar-plugin для достижения нужного результата:

xml
Скопировать код
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <finalName>Ностальгия-${project.version}</finalName>
            </configuration>
        </plugin>
    </plugins>
</build>

Великое переключение: использование профилей Maven

Если вам приходится работать с различными конфигурациями, то профили Maven — это то, что вам нужно:

xml
Скопировать код
<profiles>
  <profile>
    <id>testing</id>
    <build>
      <finalName>Test-${project.version}</finalName>
    </build>
  </profile>
</profiles>

Активировать определённый профиль можно при запуске Maven с использованием параметра -Ptesting.

Усиленный контроль: использование свойств Maven

Если вы стремитесь к большему контролю над процессом или управляете многомодульным проектом, воспользуйтесь свойствами Maven:

xml
Скопировать код
<properties>
  <jar.finalName>Проект-${project.version}</jar.finalName>
</properties>

Чтобы изменить <finalName> в командной строке, используйте параметр -Djar.finalName=CustomName.

Проработка установки: плагин Maven Install

Плагин maven-install-plugin поможет вам настроить процесс установки артефактов:

xml
Скопировать код
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-install-plugin</artifactId>
  <version>2.5.2</version>
  <configuration>
    <createChecksum>true</createChecksum>
  </configuration>
</plugin>

Вы можете изменить расположение и метаданные артефакта с использованием <file> или <pomFile>.

Расширение возможностей: артефакты WAR и EAR

Для управления артефактами war и ear разработаны специальные плагины:

  • maven-war-plugin: элемент <outputFileNameMapping> позволяет вам контролировать именование файлов.
  • maven-ear-plugin: с помощью <fileNameMapping> вы получите контроль над именами модулей.
xml
Скопировать код
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <version>3.3.1</version>
  <configuration>
    <outputFileNameMapping>@{artifactId}@-@{version}@.@{extension}@</outputFileNameMapping>
  </configuration>
</plugin>

Путеводитель по устранению неполадок

  • Чувствительность к регистру: XML чувствителен к регистру, так что будьте внимательны при написании <finalName>.
  • Полная сборка: При появлении проблем возможно, вам следует начать с команды mvn clean install.
  • Разрешение конфликтов: Убедитесь, что ваши настройки или плагины не конфликтуют с <finalName>.
  • Исследование проблемы: Не забывайте, что многие вопросы можно разрешить, изучив документацию. Рекомендуем ознакомиться с официальными руководствами Maven.

Визуализация

Представьте окончательное имя вашего файла jar как уникальную этикетку на банке джема:

До изменения настроек в Maven: | Jar | Этикетка | | ----------- | ----------------- | | artifact-1 | project-version | | artifact-2 | project-version | | artifact-3 | project-version |

После внесения изменений:

xml
Скопировать код
<build>
  <finalName>УникальныйJar-${project.version}</finalName>
</build>

Результат после изменения настроек: | Jar | Этикетка | | ----------- | ----------------------------- | | artifact-1 | УникальныйJar-1.0-SNAPSHOT | | artifact-2 | УникальныйJar-1.0-SNAPSHOT | | artifact-3 | УникальныйJar-1.0-SNAPSHOT |

Таким образом, каждый архив оформлен уникальной и узнаваемой меткой, что облегчает его идентификацию благодаря возможностям Maven. 😎

Чествование

Спасибо Маттью за его ценные замечания и обратную связь, а также за указание на возможные проблемы с использованием <finalName>. Мы совершенствуемся благодаря помощи всего сообщества разработчиков!

Полезные материалы

  1. Maven – Введение в цикл сборки — детальное описание цикла сборки Maven.
  2. Как создать исполняемый JAR с зависимостями через Maven? – Stack Overflow — обзор решений для запуска JAR файла с использованием Maven, основанный на опыте сообщества.
  3. Maven – Справочник по POM — официальная документация по конфигурации файла POM.
  4. Как управлять профилями в Maven – DZone — подробное руководство по настройке сборок в Maven с использованием профилей.