maven web模块依赖

时间:2010-07-21 11:26:45

标签: maven-2

我有一个名为“PARENT”的父网络模块。我有另一个名为“CHILD”的网络模块。 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 web module 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 个答案:

答案 0 :(得分:1)

您无法使用父项目中的类。内容不是继承的,只是配置(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引用共同作为依赖。