【问题标题】:Maven: How to manage dependency from one child module to another child moduleMaven:如何管理从一个子模块到另一个子模块的依赖关系
【发布时间】:2019-06-30 06:24:55
【问题描述】:

我有 Maven 父子项目,其中父有多个子模块。其中一个子模块正在生成一个 jar,另一个则依赖于该 jar。

项目结构如下:一个父模块包含三个子模块。每个都有自己的 pom.xml。 Child1 生成jar 文件,其他生成war 文件。只有 Child3 依赖于 Child1 jar。

有没有使用 pom.xml 管理此类依赖的最佳方法。

更新:当我在 Child3 中添加依赖项时,我能够构建 Child3 模块,但是当我尝试将它部署到 tomcat 上时,它会引发错误:

Caused by: java.lang.NoClassDefFoundError: org/ifxforum/xsd/_1/CIMBAcctInfoInqSvc
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.getDeclaredMethods(Class.java:1975)
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:613)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:524)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:510)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:247)
... 57 more Caused by: java.lang.ClassNotFoundException: org.ifxforum.xsd._1.CIMBAcctInfoInqSvc
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1275)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1104)
... 64 more

而我在 Child3 的 pom.xml 中的依赖为:

<dependency>
        <groupId>myGroupId</groupId>
        <artifactId>myArtifactId</artifactId>
        <version>1</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/lib/myJar.jar</systemPath>
    </dependency>

我可以看到 org/ifxforum/xsd/_1/CIMBAcctInfoInqSvc 在 jar 中。

【问题讨论】:

  • 能否制作该结构的 ascii 图片以更好地理解您的结构?
  • @khmarbaise 请参阅图片了解项目结构。

标签: maven parent-child maven-resources-plugin maven-install


【解决方案1】:

您只需在 Child3 中声明一个对 Child1 坐标的 maven 依赖项。对于版本,您可以使用${project.version}

【讨论】:

  • 感谢 cmets。我关注了您的评论,但遇到了一些问题请查看上面更新的问题。
  • 避开系统路径。 Maven 不需要路径来引用同一个多模块项目中的另一个模块。
  • 感谢 JF Meier 拯救了我的周末。根据您的 cmets,它的工作正常。
猜你喜欢
  • 2018-05-07
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 2012-07-19
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
相关资源
最近更新 更多