2009-11-05 6 views
13

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

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

ответ

16

Файлы 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
  • A pom.properties файл, находящийся в архиве META-INF/maven/${groupId}/${artifactId}/pom.properties

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

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

+0

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

3

pom.xml внутри JAR предназначен для следующих целей, Автоматическое разрешение зависимостей

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

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