0

整个项目依赖项如下所示:

- parent
  - child-a
    - pom.xml
  - child-b
    - src.main.java.resources
      - mybatis-generator.xml
    - pom.xml
  - pom.xml

父级,pom.xml

<project>
  <packaging>pom</packaging>
  <modules>
    <module>child-a</module>
    <module>child-b</module>
  </modules>
</project>

孩子-b,pom.xml

<project>
  <packaging>jar</packaging>
  <parent>
    <artifactId>parent</artifactId>
    <relativePath>../</relativePath>
  </parent>
  <dependencies>
    <dependency>
      <artifactId>child-a</artifactId>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <!-- other configs -->
      </plugin>
    </plugins>
  </build>
</project>

单独打包 child-b 项目/模块时,所有依赖项都得到了正确处理(child-a 已按预期导入)。

问题:

当我尝试mvn mybatis-generator:generate在以下目录中运行时child-b

Error: Failed to execute goal on project service_a: Could not resolve dependencies for project xx.xx.child-b:jar:1.0-SNAPSHOT: Could not find artifact xx.xx.child-a:jar:1.0-SNAPSHOT -> [Help 1]

4

1 回答 1

0

当您从嵌套项目运行 maven 时,只有在本地 repo 中所有依赖项都可用时,它才会成功。如果我从本地存储库中删除一个依赖项并在我的一个项目上尝试它,我可以重现这一点。

快照依赖项增加了另一个级别的复杂性,因为它们会过期——这意味着如果本地 repo 中的版本不是当前版本,maven 将寻找更新的版本。他们可能是为什么一个包在某个时候运行,但后来另一个 maven 推荐,比如运行生成器失败。

底线...当嵌套项目涉及快照依赖项时,运行 maven 的唯一可靠方法是运行整个项目(从父目录运行 maven)。

于 2019-06-14T14:18:14.250 回答