Как мне получить 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.
- Добавьте предоставленную вами конфигурацию плагина в файл pom.xml.
- Добавьте зависимость в проект webapp
- Щелкните правой кнопкой мыши на проекте веб-приложения maven и выберите Maven > Обновить проект.
- Выберите и веб-приложение, и библиотеку, и нажмите кнопку ОК.
- Я использую Tomcat, но когда я очищаю сервер и проверяю каталог webapp, файл jar содержит манифест
Если это не сработало, убедитесь, что цель jar:jar не игнорируется в отображениях жизненного цикла Eclipse.
- Щелкните правой кнопкой мыши по проекту библиотеки и выберите Свойства
- Перейти к: Maven > Отображения жизненного цикла
- Проверьте выполнение плагина jar:jar, для меня он на самом деле сказал Mapping: ignored, Source: workspace, поэтому мне пришлось обновить конфигурацию Eclipse
Чтобы удалить jar:jar его из списка игнорируемых для вашей рабочей области:
- Настройки рабочего пространства> Maven > Отображения жизненного цикла
- Открытые метаданные отображений жизненного цикла рабочей области
- Отредактируйте XML, чтобы удалить выполнение плагина maven-jar-plugin
- Сохранить
- Нажмите "Перезагрузить сопоставления жизненного цикла рабочей области" или перезапустите затмение. Мне пришлось перезапустить затмение, поскольку это не вступило в силу.
- Сделайте Maven > Обновите проект на произведенных проектах снова, чтобы удостовериться
Сопоставление может быть проигнорировано в файле pom.xml, и в этом случае вы найдете раздел в файле библиотеки pom под pluginManagement, который игнорирует выполнение плагина.