Я включил проект как зависимость в другой проект. В maven package
включенная зависимость не компилируется как jar, но создается пустая папка.
Проекты:
main-test (packaging: jar)
main-webservice (packaging: war)
Проект main-web service включает банку с пом.
Основной тест pom.xml:
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>de.main</groupId>
<artifactId>test</artifactId>
<packaging>jar</packaging>
</project>
Основной веб-сервис 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>de.main</groupId>
<artifactId>ws</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>de.main</groupId>
<artifactId>test</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<build><plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
</plugin>
</plugins></build>
</project>
Зависимости тестового проекта разрешаются внутри проекта веб-службы, поэтому стихотворение кажется правильным.
В любом случае, если я запустил «mvn package», ресурсы main-webservices
компилируются для целевой, но папка libs
содержит другую папку с именем main-test-1.0.jar
. НО это папка, а не запакованная банка.
Что здесь могло быть не так? Как я могу упаковать проект как jar, а не как папку?
2 ответа
включенная зависимость не компилируется как jar
Maven никогда не компилирует зависимости. Он просто принимает их такими, какие они есть, и либо помещает их в путь к классам, либо копирует их в WAR. Но это никогда не меняет артефакт.
Это также означает, что зависимость должна быть в вашем локальном репо (где-то ниже ~/.m2/repository/
), иначе Maven будет недоволен (= завершится с ошибкой).
Примечание: у Maven нет большой памяти. Он всегда может держать только один модуль в его крошечном мозгу. В Eclipse вы можете добавить еще один проект в путь сборки, но Maven не может этого сделать. Для правильной работы Maven вы должны установить все зависимости в локальном репо.
install
упомянутые проекты открытой рабочей области в репо?
Идея:
Проверьте, существует ли банка в вашем репозитории
Убедитесь, что проект jar в eclipse не упоминается в военном проекте в пути сборки Java.
Сделайте это без плагина eclipse mvn:
mvn eclipse: clean (для обоих проектов)
mvn eclipse: eclipse (для обоих проектов)
mvn clean install (для обоих проектов)
.m2
, так как я хочу, чтобы мне не приходилось напрямую install
jar в хранилище. Я просто хочу, чтобы его нашел и построил maven, поскольку у меня открыты оба проекта в моей рабочей области.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
main-test
также включается не как jar, а как папка.