Удаление номера версии из имени файла с помощью Maven

StackOverflow https://stackoverflow.com/questions/2225142

Вопрос

У меня есть проект с 5 модулями в maven.Прямо сейчас, когда я выполняю «чистую установку mvn», он генерирует ухо, содержащее два jar-файла, один war и один sar из других модулей.

Все имена файлов содержат версию, например, 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

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

Это было полезно?

Решение

В ушном модуле вы можете использовать project.build.finalName элемент или вы можете настроить maven-ушной плагин который поддерживает finalName необязательный параметр.А чтобы настроить окончательное имя связанного jar-файла, вам необходимо определить 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>

Другие советы

Этого можно добиться, указав finalName свойство в вашем pom следующим образом:

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

Пункт первый:одиночный JAR/WAR.

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

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

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

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

Итак, пункт второй:проблема с УХОМ.

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

<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, все номера версий удаляются из jar-файлов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top