【发布时间】:2018-10-06 13:50:15
【问题描述】:
我有一个多模块 maven 项目,其中包含三个不同的模块 Module-Data、Module-Domain、Module-Web。这三个项目都是 Spring Boot 项目,但是 Module-Web 是该项目的 Web 组件,它处理我想要为其构建 war 文件的所有面向 Web 的内容。我有一个包含以下 pom 文件的父项目,其中不包含任何代码。
<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>4.0.0</modelVersion>
<groupId>com.somename</groupId>
<artifactId>My-Project</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>module-data</module>
<module>module-domain</module>
<module>modele-web</module>
</modules>
Module-Domain 依赖于 Module-Data,Module-Web 依赖于 Module-Data 和 Module-Domain。我遇到的问题是,当我尝试使用 maven 构建项目时,在构建 Module-Domain 时出现以下错误:
package com.somename.data.model does not exist // class file with this error
从 Module-Data 项目导入的 Module-Domain 类文件失败并出现此错误。我怀疑这是因为 maven 在构建时没有将 Module-Data jar 添加到 Module-Domain 中,尽管它在其 pom 文件中引用。如何解决这个问题并生成一个包含所有依赖项的 war 文件?
模块域 pom.xml:
<dependency>
<groupId>com.somename.data</groupId>
<artifactId>module-data</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
模块-Web pom.xml
<dependency>
<groupId>com.somename.data</groupId>
<artifactId>module-data</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.somename.domain</groupId>
<artifactId>module-domain</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
【问题讨论】:
-
验证是否在每个 pom.xml 上定义了版本 0.0.1-SNAPSHOT。因为在父 pom 中,您正在为所有模块定义版本 1.0-SNAPSHOT,除非您在子项目中重新定义它。我的意思是,当您设置依赖项时,版本应该匹配。
标签: java maven spring-mvc spring-boot intellij-idea