Удаление номера версии из имени файла с помощью Maven - PullRequest
41 голосов
/ 09 февраля 2010

У меня есть проект с 5 модулями в Maven. Прямо сейчас, когда я делаю «чистую установку mvn», он генерирует ухо, содержащее две банки: одну войну и одну сару из других модулей.

Все имена файлов содержат версию, например, projectx-ear-2.0.0.ear, projectx-client-2.0.0.jar и т. Д.

Мне нужно переименовать одну из банок и последнее ухо, чтобы пропустить версию в имени файла. Это должно выглядеть так:

projectx-ear.ear
|
+-- projectx-client.jar
|
+-- projectx-misc-2.0.0.jar
|
+-- projectx-sar-2.0.0.sar
|
\-- projectx-web-2.0.0.web

Сейчас я использую следующие плагины для сборки: maven-compiler-plugin и maven-release-plugin

Каков наилучший способ достичь ожидаемых результатов?

Ответы [ 3 ]

92 голосов
/ 09 февраля 2010

Вы можете достичь этого, указав свойство finalName в вашем pom следующим образом:

<build>
    <finalName>${project.artifactId}</finalName>
</build>
21 голосов
/ 09 февраля 2010

В вашем ушном модуле вы можете использовать элемент project.build.finalName или настроить maven-ear-plugin , который поддерживает дополнительный параметр finalName. И чтобы сконфигурировать окончательное имя объединенного фляги, вам нужно определить jarModule и установить для него свойство bundleFileName.

Окончательная конфигурация может выглядеть примерно так (здесь я покажу, как установить окончательное имя уха в конфигурации плагина):

<project>
  [...]
  <dependencies>
    <dependency>
      <groupId>yourgroupid</groupId>
      <artifactId>projectx-client</artifactId>
      <version>2.0.0</version><!-- not mandatory if inherited -->
    </dependency>
    [...]
  </dependencies>
  [...]  
  <build>
    [...]
    <plugins>
      [...]
      <plugin>
        <artifactId>maven-ear-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <finalName>projectx-ear</finalName>
          <modules>
            <jarModule>
              <groupId>yourgroupid</groupId>
              <artifactId>projectx-client</artifactId>
              <bundleFileName>anotherName.jar</bundleFileName>
            </jarModule>
          </modules>
        </configuration>
      </plugin>
      [...]
</project>
0 голосов
/ 19 ноября 2018

Точка первая: один JAR / WAR.

Чтобы создать его без номера версии в имени, в pom.xml просто добавьте код:

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

Итак, если вы скомпилируете, например, projectx_misc, вы получите projectx_misc.jar .

Что со мной происходит? Когда я компилирую один и тот же пакет из проекта POM (в Netbeans), все jar-файлы имеют версию в имени, а EAR включает в себя архивы xxx-version.jar.

Итак, точка вторая: проблема EAR.

В файле pom.xml EAR измените maven-ear-plugin , добавив в конфигурацию это свойство:

<fileNameMapping>no-version</fileNameMapping>

Это мой плагин, например:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-ear-plugin</artifactId>
   <version>2.8</version>
   <configuration>
       <version>6</version>
       <defaultLibBundleDir>lib</defaultLibBundleDir>
       <fileNameMapping>no-version</fileNameMapping>
   </configuration>
</plugin>

Итак, теперь, когда я компилирую все архивы из pom проекта, все номера версий удаляются из банок.

...