Как создать jar архив исходников проектов с помощью maven

Я включаю следующий фрагмент в объектную модель проектов

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.1.2</version>
  </plugin>

согласно maven.apache.org плагин прикрепляет цель jar к фазе пакета. Однако выполнение "mvn clean; mvn package" не генерирует project-sources.jar в целевом каталоге.

РЕДАКТИРОВАТЬ: Вероятно, я не понимаю комментарий от веб-сайта, который я процитировал: "[Источник: цель jar] По умолчанию привязывается к фазе жизненного цикла: пакет." Я ожидал, что когда я включу раздел плагинов, как показано выше, maven уже связывает цель source:jar с фазой пакета. Я ошибаюсь здесь? Что означает комментарий?

Матиас.

3 ответа

Решение

Документация немного вводит в заблуждение. Плагин имеет фазу выполнения пакета по умолчанию, но цель по умолчанию отсутствует. Я считаю, что вы должны указать цель, чтобы плагин работал.

Попробуй это:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>2.1.2</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

Затем используется привязка по умолчанию jar-no-fork цель package фаза жизненного цикла, и это, вероятно, то, что вам нужно здесь.

Вам нужно привязать плагин к цели жизненного цикла maven, чтобы он генерировал исходную флягу. В противном случае вам нужно вызвать его явно mvn source:jar,

Как описано здесь, вы можете связать его с jar Цель.

Другие вопросы по тегам