我有一个相当简单的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程序包都会导致“找不到符号”消息。

我究竟做错了什么?

最佳答案

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

  • parent (pom)
  • 核心(jar,带有以前位于父类中的所有类)
  • child ( war ,取决于核心)

  • 上级:
    <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>
    

    10-07 19:10
    查看更多