【问题标题】:How to configure Maven multi module dependency on sub project with different packaging如何在不同打包的子项目上配置Maven多模块依赖
【发布时间】:2018-02-19 05:36:11
【问题描述】:

我有 2 个 maven 项目:一个是带有 WAR 包装(rest)的 rest 服务,另一个是带有 jar 包装的访问数据库的模块(服务)。

在其余模块的 pom 中,我添加了 service 的依赖项,如下所示:

<dependency>
    <groupId>project</groupId>
    <artifactId>service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

但是我收到了这个错误:

项目“rest”缺少必需的库: 'C:\Users\user.m2\repository\project\service\0.0.1-SNAPSHOT\service-0.0.1-SNAPSHOT.jar'

我仍在开发服务模块,所以它不能在 .m2 库中。如何连接这两个模块。有什么方法可以访问@RestController 类中的服务功能?

编辑: 我的项目目录结构是

Rest
  |--- pom.xml

Service
  |--- pom.xml

两者都是独立的项目。

在服务项目上运行 mvn clean package install 有效,但是,有什么方法可以让 maven 读取我的快照版本?

【问题讨论】:

  • 我猜你正在构建多模块。向我们展示您的项目目录结构
  • 还有来自服务和休息模块的pom.xml以及父pom.xml
  • 您是否构建了 service-0.0.1-SNAPSHOT.jar'?我建议你先为那个(服务项目)项目执行“mvn clean package install”,然后再构建war。

标签: java maven war multi-module


【解决方案1】:

要让您的多模块项目协同工作,您需要将它们与父项目一起添加。不要担心您所有的模块化项目都可以独立并单独构建。说你的情况你的父项目目录应该像

parent
  |-- pom.xml
  rest
     |--- pom.xml  
  service
     |--- pom.xml

并且在您的 top levelparent POM 中,您将告诉 maven 您的所有子模块项目,例如

    <project xmlns="http://maven.apache.org/POM/4.0.0" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
             http://maven.apache.org/xsd/maven-4.0.0.xsd">

       <modelVersion>1.0.0</modelVersion>
       <groupId>your.groudid</groupId>
       <artifactId>parent</artifactId>
       <version>1.0</version>
       <packaging>pom</packaging>

        <modules>
            <module>rest</module>
            <module>service</module>
        </modules>
    </project>

在你的服务模块pom.xml有这个

<parent>
    <groupId>your.groudid</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>service</artifactId>
<name>service</name>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

它会告诉 maven 它有一个父模块,需要将其构建为一个带有相关 artifact-id 的 jar

现在你可以告诉 maven 你的 rest 模块有一个 service 模块的依赖,就像其他依赖一样。关注这个

<parent>
    <groupId>your.groudid</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>rest</artifactId>
<name>rest</name>
<packaging>war</packaging>

<dependencies>
   ...
    <dependency>
        <groupId>your.groupid</groupId>
        <artifactId>service</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    ....
</dependencies>

注意:为了更好地理解,您可以阅读这篇简短的Maven Multi Module Project 文章。还有这个 github repository 有一个简洁的例子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多