我有一个多模块MVN项目,其中包含1个聚合器pom,另一个父pom和3个其他模块,如下所示:
所有项目 -项目父母 -项目常见 -项目维护 -project-webApp
project-WebApp依赖于project-common和project-maintenance。
当我在project-all上运行全新安装时,它会尝试从存储库中下载模块,而不是构建它们。
我对多模块项目的理解是,它还在所有模块上运行安装,但这不是正在发生的事情。
如果我分别在所有模块上运行全新安装,则项目所有全新安装均可正常运行。当我在Eclipse中运行mvn构建并选择了“解析工作区工件”选项时,它也可以工作。
但是,这两个选项都不是可行的选项,因为使用多模块项目的想法是从一个位置运行多个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应用类似,但是它们没有任何内部依赖项。
同样,我想做的是,仅对所有命令运行clean install命令,而不必担心单独构建任何模块。
答案 0 :(得分:0)
我认为问题在于您将父级定义为模块。当您运行“ clean”时,其他模块使用的父级仍然不可用,因此Maven尝试在存储库中找到它。最好在全项目pom中定义父级信息,因为在构建阶段中父级必须可用。