Как мне получить m2e-WTP для построения jar-зависимостей с maven?

Я использую eclipse luna, и у меня есть 2 проекта maven: веб-приложение и библиотека java, которая зависит от веб-приложения.

библиотека pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.test</groupId>
  <artifactId>library</artifactId>
  <verson>0.0.1-SNAPSHOT</version>
   <build>
    <plugins>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <archive>
            <manifestEntries>
              <Dependencies>just a test</Dependencies>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
    </plugins>
   </build>
</project>

webApp pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.test</groupId>
  <artifactId>webapp</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <dependencies>
    <dependency>
        <groupId>org.test</groupId>
        <artifactId>library</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>
</project>

Теперь, когда я развертываю свою войну на веб-сервере (jboss) под именем "Запуск от имени…", создается файл войны, в который встраивается jar библиотеки под WEB-INF/lib. Так что все выглядит хорошо, за исключением того, что это не так: сгенерированный jar не был сгенерирован maven, и он пропускает любую конфигурацию, установленную на maven-jar-plugin (в этом случае Dependencies: just a test линия).

Это может быть очевидно, но если я использую "Запуск от имени сборки Maven" в проекте библиотеки, то оба jar:jar а также package цели строит банку с ожидаемым манифестом.

1 ответ

Мне удалось заархивировать это с помощью конфигуратора maven.

  1. Добавьте предоставленную вами конфигурацию плагина в файл pom.xml.
  2. Добавьте зависимость в проект webapp
  3. Щелкните правой кнопкой мыши на проекте веб-приложения maven и выберите Maven > Обновить проект.
  4. Выберите и веб-приложение, и библиотеку, и нажмите кнопку ОК.
  5. Я использую Tomcat, но когда я очищаю сервер и проверяю каталог webapp, файл jar содержит манифест

Если это не сработало, убедитесь, что цель jar:jar не игнорируется в отображениях жизненного цикла Eclipse.

  1. Щелкните правой кнопкой мыши по проекту библиотеки и выберите Свойства
  2. Перейти к: Maven > Отображения жизненного цикла
  3. Проверьте выполнение плагина jar:jar, для меня он на самом деле сказал Mapping: ignored, Source: workspace, поэтому мне пришлось обновить конфигурацию Eclipse

Чтобы удалить jar:jar его из списка игнорируемых для вашей рабочей области:

  1. Настройки рабочего пространства> Maven > Отображения жизненного цикла
  2. Открытые метаданные отображений жизненного цикла рабочей области
  3. Отредактируйте XML, чтобы удалить выполнение плагина maven-jar-plugin
  4. Сохранить
  5. Нажмите "Перезагрузить сопоставления жизненного цикла рабочей области" или перезапустите затмение. Мне пришлось перезапустить затмение, поскольку это не вступило в силу.
  6. Сделайте Maven > Обновите проект на произведенных проектах снова, чтобы удостовериться

Сопоставление может быть проигнорировано в файле pom.xml, и в этом случае вы найдете раздел в файле библиотеки pom под pluginManagement, который игнорирует выполнение плагина.

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