我有一个相当简单的Maven化的Java项目,但是在解决这个问题时遇到了麻烦。
我的父模块定义了很多Java类(和依赖项),我希望它们对几个子模块很有用。子模块之一专用于部署Web应用程序,因此它需要一些额外的类(Servlet)以及父模块中的所有内容。
文件结构如下所示
- parent
- src
- pom.xml
- child
- src
- pom.xml
我的 parent pom看起来像这样:
<project>
<groupId>my.group</groupId>
<artifactId>parent</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
...
<modules>
<module>child</module>
</modules>
</project>
child 看起来像这样:
<project>
<artifactId>child</artifactId>
<packaging>war</packaging>
<parent>
<artifactId>parent</artifactId>
<groupId>my.group</groupId>
<version>0.0.1</version>
</parent>
...
</project>
这是我需要让 child 知道父级中定义的类和依赖项的全部吗?它似乎不是:eclipse会产生编译错误,并且在提到父类时,从父文件夹或子文件夹运行mvn clean程序包都会导致“找不到符号”消息。
我究竟做错了什么?
最佳答案
我会像这样更改您项目的结构:
上级:
<project>
<groupId>my.group</groupId>
<artifactId>parent</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
<modules>
<module>core</module>
<module>child</module>
<!-- possibly more modules... -->
</modules>
</project>
核:
<project>
<parent>
<groupId>my.group</groupId>
<artifactId>parent</artifactId>
<version>0.0.1</version>
</parent>
<artifactId>core</artifactId>
<packaging>jar</packaging>
</project>
child :
<project>
<parent>
<groupId>my.group</groupId>
<artifactId>parent</artifactId>
<version>0.0.1</version>
</parent>
<artifactId>module1</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>my.group</groupId>
<artifactId>core</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>