зависимость веб-модуля maven - PullRequest
0 голосов
/ 21 июля 2010

У меня есть родительский веб-модуль под названием «РОДИТЕЛЬ».И у меня есть еще один веб-модуль под названием «РЕБЕНОК».Модуль PARENT - это война.Как я могу добавить зависимость в модуле CHILD.Я попробовал следующее.Но это не работает.

Root 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">
 <modelVersion>4.0.0</modelVersion>
 <groupId>MY_App</groupId>
 <artifactId>MY_App</artifactId>
 <version>1.0-SNAPSHOT</version>
 <packaging>pom</packaging>
 <name>MY Application</name>
 <url>http://maven.apache.org</url>
 <repositories>
  <repository>
   <id>ibiblio</id>
   <name>iBiblio Maven2 Repository</name>
   <url>http://www.ibiblio.org/maven2</url>
  </repository>
  <repository>
   <id>apache-repo</id>
   <name>Apache Repository</name>
   <url>http://people.apache.org/repo/m2-snapshot-repository</url>
  </repository>
 </repositories>
 <modules>
  <module>MY_PARENT</module>
  <module>MY_CHILD</module>
 </modules>
</project>

PARENT веб-модуль 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 ">
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <artifactId>MY_App</artifactId>
  <groupId>MY_App</groupId>
  <version>1.0-SNAPSHOT</version>
 </parent>
 <groupId>MY_App</groupId>
 <artifactId>MY_PARENT</artifactId>
 <packaging>war</packaging>
 <version>1.0-SNAPSHOT</version>
 <name>MY_PARENT Webapp</name>
 <url>http://maven.apache.org</url>

</project>

CHILD веб-модуль 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 ">
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <artifactId>MY_App</artifactId>
  <groupId>MY_App</groupId>
  <version>1.0-SNAPSHOT</version>
 </parent>
 <groupId>MY_App</groupId>
 <artifactId>MY_CHILD</artifactId>
 <packaging>war</packaging>
 <version>1.0-SNAPSHOT</version>
 <name>MY_CHILD Webapp</name>
 <url>http://maven.apache.org</url>
 <dependencies>
  <dependency>
   <groupId>MY_App</groupId>
   <artifactId>MY_PARENT</artifactId>
   <version>1.0-SNAPSHOT</version>
   <type>war</type>
  </dependency>
 </dependencies>
</project>

При упаковке приложения появляется ошибка компиляции.т.е. модуль CHILD не ссылается на классы модуля PARENT.

Примечание: Я удалил "http://maven.apache.org/maven-v4_0_0.xsd" это расположение схемы из-за ограничения.

1 Ответ

1 голос
/ 21 июля 2010

Вы не можете использовать классы из родительского проекта.Содержимое не наследуется, только конфигурация (pom).

В родительских / дочерних отношениях родительский проект обычно имеет упаковочный pom, так как он задает конфигурацию, но не имеет содержимого.

Чтовы можете сделать это добавить зависимость в дочерний проект

<dependency>
  <artifactId>MY_App</artifactId>
  <groupId>MY_PARENT</groupId>
  <version>1.0-SNAPSHOT</version>
  <type>war</type>
</dependency>

, но упаковывать войну в войну не очень элегантно.

Правильно сделать это в maven:три модуля

<modules>
  <module>common</module>
  <module>war1</module>
  <module>war2</module>
</modules>

, где common имеет упаковочный jar-файл и включает все java-классы, используемые как в других проектах, так и ссылки war1 и war2, общие в качестве зависимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...