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

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

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


person Dan Dyer    schedule 05.11.2009    source источник


Ответы (2)


Файлы 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

Значение по умолчанию верно.

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

person Pascal Thivent    schedule 05.11.2009
comment
Файлы pom.xml и pom.properties упакованы в JAR, так что каждый артефакт, созданный Maven, является самоописываемым, а также позволяет вам использовать метаданные в вашем собственном приложении, если возникнет такая необходимость. почему моему приложению нужны метаданные в файле pom? - person david blaine; 09.03.2013
comment
например, если вы не хотите публиковать jar-файл в онлайн-репозитории mvn, вы можете передать файл jar кому-то другому, и они смогут установить его в свой локальный репозиторий mvn, используя mvn-install-plugin:3.0.0-M1. и использовать его. maven будет знать правильные зависимости этого локально установленного jar-файла, что невозможно без pom.xml. - person sify; 04.12.2020

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

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

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

person ZZ Coder    schedule 05.11.2009