Ответ 1
В Maven добавление зависимости - всего лишь кусок пирога. Взгляните на следующий 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/maven-v4_0_0.xsd"
>
<modelVersion>4.0.0</modelVersion>
<!-- Project Details -->
<groupId>ykyuen</groupId>
<artifactId>project-apple</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>project-apple</name>
<dependencies>
<!-- project-apple depends on project-banana -->
<dependency>
<groupId>ykyuen</groupId>
<artifactId>project-banana</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
Настройка указанной зависимости аналогична импортированию проекта-banana.jar в project-apple.
Теперь у меня есть другой проект веб-приложений Maven, называемый project-orange с типом упаковки, равным войне. Добавление вышеупомянутой ссылки зависимостей вообще не работает, поскольку Java не видит файл .war как путь к классам. Чтобы решить проблему, существует два подхода.
-
Создайте модуль Maven, который содержит классы project-orange с упаковкой jar. Теперь вы можете рассматривать новый модуль Maven как нормальную зависимость.
-
Настройте maven-war-plugin таким образом, чтобы он создавал файл .jar при создании файла .war. Добавьте следующий код в node вашего военного проекта. Ниже приведен пример.
.
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<attachClasses>true</attachClasses>
<classesClassifier>classes</classesClassifier>
</configuration>
</plugin>
</plugins>
</build>
...
После запуска mvn install вы можете найти следующие файлы архива в целевой папке
- Проект-orange.war
- Проект-оранжево-classes.jar
Теперь вы можете отредактировать pom.xml проекта-apple для добавления новой зависимости.
<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/maven-v4_0_0.xsd"
>
<modelVersion>4.0.0</modelVersion>
<!-- Project Details -->
<groupId>ykyuen</groupId>
<artifactId>project-apple</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>project-apple</name>
<dependencies>
<!-- project-apple depends on project-banana -->
<dependency>
<groupId>ykyuen</groupId>
<artifactId>project-banana</artifactId>
<version>1.0</version>
</dependency>
<!-- project-apple depends on project-orange -->
<dependency>
<groupId>ykyuen</groupId>
<artifactId>project-orange</artifactId>
<version>1.0</version>
<!-- To map the project-orange-classes.jar -->
<classifier>classes</classifier>
</dependency>
</dependencies>
</project>
ссылка: http://eureka.ykyuen.info/2009/10/30/maven-dependency-on-jarwar-package/