Maven包括父类

Dav*_*ave 7 java inheritance maven

我有一个相当简单的maven-ized Java项目,但我很难理解它.

我的父模块定义了许多我希望对几个子模块有用的Java类(和依赖项).其中一个子模块专门用于部署Web应用程序,因此它需要一些额外的类(servlet)以及来自父模块的所有内容.

文件结构如下所示

 - parent
   - src
   - pom.xml
   - child
     - src
     - pom.xml
Run Code Online (Sandbox Code Playgroud)

我的父母pom看起来像这样:

<project>
  <groupId>my.group</groupId>
  <artifactId>parent</artifactId>
  <version>0.0.1</version>
  <packaging>pom</packaging>

  ...

  <modules>
    <module>child</module>
  </modules>
</project> 
Run Code Online (Sandbox Code Playgroud)

孩子看起来像这样:

<project>
  <artifactId>child</artifactId>
  <packaging>war</packaging>
  <parent>
    <artifactId>parent</artifactId>
    <groupId>my.group</groupId>
    <version>0.0.1</version>
  </parent>

  ...

</project>
Run Code Online (Sandbox Code Playgroud)

这是我需要让孩子知道父类中定义的类和依赖关系吗?它似乎不是:eclipse给出编译错误,并且从父文件夹或子文件夹运行mvn clean包时,在提到父类的任何时候都会"无法找到符号"消息.

我究竟做错了什么?

Roa*_*ner 16

我会像这样更改项目的结构:

  • 父母(pom)
    • core(jar,包含曾经在父级中的所有类)
    • 孩子(战争,取决于核心)

家长:

<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>
Run Code Online (Sandbox Code Playgroud)

核心:

<project>
  <parent>
    <groupId>my.group</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1</version>
  </parent>
  <artifactId>core</artifactId>
  <packaging>jar</packaging>
</project>
Run Code Online (Sandbox Code Playgroud)

儿童:

<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>
Run Code Online (Sandbox Code Playgroud)

  • 我在父级上执行了"清理安装",因此所有模块都会根据依赖性以正确的顺序自动构建. (3认同)
  • 另外,在构建child之前,你必须先安装mvn clean install core项目 (2认同)