Каково значение файла POM, который Maven размещает в JAR файле, используется ли что-либо?

Когда Maven создает JAR файл, он помещает файл POM модуля внутрь (по-видимому, в каталог <groupid> /<artifactid> ).

Когда я создаю JAR файл из Ant для развертывания с помощью задач Maven Ant, важно ли присутствие этого POM файла (того, что внутри JAR)? Кажется, это не так, но я просто хотел убедиться, что он нигде не используется, и чтобы подтвердить, где именно в JAR файле он должен быть.

Ответы

Ответ 1

Файлы pom.xml и pom.properties упаковываются в JAR, так что каждый артефакт, созданный Maven, самоописывается, а также позволяет использовать метаданные в вашем собственном приложении, если возникнет такая необходимость. Одно простое использование может заключаться в том, чтобы получить версию вашего приложения.

Тем не менее, включение этих файлов может быть дезактивировано при желании через MavenArchiverConfiguration, которое допускает логический addMavenDescriptor , и это безопасно для не включать их (даже если мне будет приятно их иметь). Например, для JAR:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <addMavenDescriptor>false</addMavenDescriptor>
          </archive>
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>

Что касается расположения этих файлов, в документации addMavenDescriptor говорится:

Будет ли сгенерированный архив содержать эти два файла Maven:

  • Файл pom, расположенный в архиве в META-INF/maven/${groupId}/${artifactId}/pom.xml
  • Файл pom.properties, расположенный в архиве в META-INF/maven/${groupId}/${artifactId}/pom.properties

Значение по умолчанию - true.

Это должно ответить на ваш вопрос.

Ответ 2

pom.xml внутри JAR предназначен для следующих целей:

  • Автоматическое разрешение зависимостей.
  • Развертывание JAR. Можно извлечь pom.xml из JAR автоматически.
  • Проверка целостности по репозиторию (JAR соответствует POM).

Я не знаю, реализована ли какая-либо из этих функций в любом месте. Вы можете игнорировать его наверняка.