我有一个名为“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”此架构位置。
答案 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引用共同作为依赖。