Но при запуске только компиляции классы jar не создаются и все терпит неудачу.
Вы действительно можете настроить подключаемый модуль maven-war-plugin для упаковки / развертывания классов и ресурсов, включенных в ваше веб-приложение, как «прикрепленный» JAR-артефакт с классификатором со следующей конфигурацией:
<project>
...
<artifactId>mywebapp</artifactId>
<version>1.0-SNAPSHOT</version>
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>X.Y</version>
<configuration>
<attachClasses>true</attachClasses>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
Но этот артефакт создается во время фазы package
, поэтому не ожидайте, что он будет там, если вы запустите только compile
.
Обратите внимание, что эта опция конфигурации была введена для очень специфического варианта использования, варианта использования тощей войны. Если вам необходимо повторно использовать этот JAR-файл в другом проекте, рекомендуется в общем случае переместить классы в отдельный модуль, который создает JAR-файл, а затем объявить зависимость от этого JAR-файла как из вашего веб-приложения, так и из любых других проектов, которые нужно это.