使用多模块项目构建战争

时间:2018-04-26 00:45:08

标签: java maven spring-mvc spring-boot intellij-idea

我有一个多模块maven项目,包含三个不同的模块Module-Data,Module-Domain,Module-Web。所有这三个项目都是Spring启动项目,但是Module-Web是项目的Web组件,它处理所有面向Web的内容,我想为其构建war文件。我有一个父项目,其中包含以下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>

模块 - 域依赖于模块 - 数据和模块 - Web依赖于模块 - 数据和模块 - 域。我遇到的问题是,当我尝试使用maven构建项目时,在使用以下错误构建Module-Domain时失败:

package com.somename.data.model does not exist // class file with this error

从Module-Data项目导入的模块域类文件因此错误而失败。我怀疑这是因为maven在构建时没有将Module-Data jar添加到Module-Domain,尽管它在pom文件中被引用。如何解决此问题并生成包含所有依赖项的war文件?

Module-Domain pom.xml:

    <dependency>
        <groupId>com.somename.data</groupId>
        <artifactId>module-data</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <scope>compile</scope>
    </dependency>

Module-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>

1 个答案:

答案 0 :(得分:1)

这是您正在使用的简单直接方法。不应该引起问题。

Module-Domain pom.xml:

<parent>
    <groupId>com.somename</groupId>
    <artifactId>My-Project</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<dependencies>
    <dependency>
        <groupId>com.somename.data</groupId>
        <artifactId>module-data</artifactId>
        <version>0.0.1-SNAPSHOT</version> <!-- Make sure this version is correct -->
    </dependency>
</dependencies>

Module-Web pom.xml:

<parent>
    <groupId>com.somename</groupId>
    <artifactId>My-Project</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<dependencies>
    <dependency>
        <groupId>com.somename.domain</groupId>
        <artifactId>module-domain</artifactId> <!-- pulls "module-data" as well : transitive dependency -->
        <version>0.0.1-SNAPSHOT</version> <!-- Make sure this version is correct -->
    </dependency>
</dependencies>

在构建所有模块的父项目上执行 maven clean compile

如果您仍然看到任何编译问题,则需要修复源代码。