【问题标题】:Maven Multi Module Project looking for modules in repository instead of Building themMaven 多模块项目在存储库中寻找模块而不是构建它们
【发布时间】:2018-12-12 07:14:40
【问题描述】:

我有一个多模块的 MVN 项目,它有 1 个聚合器 pom,另一个父 pom 和 3 个其他模块,如下:

全部项目 -项目-父 -project-common -项目维护 -project-webApp

project-WebApp 依赖于 project-common 和 project-maintenance。

当我在 project-all 上运行全新安装时,它会尝试从存储库下载模块而不是构建它们。

我对多模块项目的理解是它也在所有模块上运行安装,但事实并非如此。

如果我分别对所有模块运行全新安装,则 project-all 全新安装工作正常。当我在 Eclipse 中运行 mvn build 并选择了 Resolve Workspace Artifacts 选项时,它也可以工作。

但是,这两个选项都不是可行的选项,因为使用多模块项目的想法是从一个位置运行多个 pom。

我是否遗漏了什么,要求 mvn 构建这些模块而不是在存储库中查找它们的过程是什么。

全部项目的 Pom:

<?xml version="1.0" encoding="UTF-8"?>
<groupId>com.midtier.api</groupId>
<artifactId>project-all</artifactId>
<version>1.0</version>
<packaging>pom</packaging>

<name>project-all</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>


<modules>
    <module>project-parent</module>
    <module>project-data</module>
    <module>project-maintenance</module>
    <module>project-WebApp</module>
</modules>

项目父级的 POM:

<?xml version="1.0" encoding="UTF-8"?>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
</parent>

<groupId>com.midtier.api</groupId>
<artifactId>project-parent</artifactId>
<packaging>pom</packaging>
<version>1.0</version>


<name>${project.artifactId}</name>
<description>${project.artifactId}</description>
<url>http://maven.apache.org</url>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <elasticsearch.version>6.2.4</elasticsearch.version>
    <jsonsimple.version>1.1.1</jsonsimple.version>
    <slf4j-version>1.7.25</slf4j-version>
</properties>

<dependencyManagement>
<!--Dependencies Here-->
</dependencyManagement>

项目-Webapp 的 Pom:

    <?xml version="1.0" encoding="UTF-8"?>
<project>
    <parent>
        <groupId>com.midtier.api</groupId>
        <artifactId>project-parent</artifactId>
        <version>1.0</version>
    </parent>

    <groupId>com.rbc.midtier.api</groupId>
    <artifactId>project-webapp</artifactId>
    <packaging>jar</packaging>
    <version>${project.parent.version}</version>

    <name>${project.artifactId}</name>
    <description>${project.artifactId}</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.midtier.api</groupId>
            <artifactId>project-data</artifactId>
        </dependency>
        <dependency>
            <groupId>com.midtier.api</groupId>
            <artifactId>project-maintenance</artifactId>
        </dependency>

    </dependencies>
</project>

project-data 和 project-maintenance 类似于 project-web 应用,但它们没有任何内部依赖关系。

同样,我想做的是,只需对所有模块运行全新安装命令,而不必担心单独构建任何模块。

【问题讨论】:

    标签: maven


    【解决方案1】:

    我认为问题在于您将父级定义为模块。当您运行“clean”时,其他模块使用的父模块仍然不可用,因此 Maven 尝试在存储库中找到它。更好地在 project-all pom 中定义父级信息,因为在构建阶段父级必须可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-26
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 2016-01-12
      • 2019-07-11
      相关资源
      最近更新 更多