如何配置Maven多模块依赖于不同包装的子项目

How to configure Maven multi module dependency on sub project with different packaging

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

在rest模块的pom中我添加了服务依赖如下:

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

但是我收到了这个错误:

Project 'rest' is missing required library: 'C:\Users\user.m2\repository\project\service[=14=].0.1-SNAPSHOT\service-0.0.1-SNAPSHOT.jar'

我还在开发服务模块,所以它不能在.m2 库中。我怎样才能连接这两个模块。有什么方法可以让我在 @RestController 类?

中访问我的服务功能

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

Rest
  |--- pom.xml

Service
  |--- pom.xml

两者都是独立的项目。

运行 mvn clean package install 服务项目有效,但是,有没有办法让 maven 读取我的快照版本?

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

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

并且在你的顶级父级 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 它有一个父模块并且需要将其构建为一个 jar 与相关 artifact-id

现在您可以告诉 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 article. And also this github repository,其中有一个关于此的简明示例。