编译多模块maven项目而不安装到本地存储库

har*_*run 3 java pom.xml maven multi-module

我的多模块maven项目中有编译(和打包)问题.编译两个项目中的一个项目时出现问题,这两个项目是兄弟项目并包含在父项目中,另一个项目依赖于另一项目.为简单起见,我在pom.xml这里草绘项目文件夹结构和内容.

folder structure

-parent
|
|-child1
| |-src
| |  |-main
| |     |-java
| |        |-Child1Class.java
| |-pom.xml
|
|-child2
| |-src
| |  |-main
| |     |-java
| |        |-Child2Class.java
| |-pom.xml
|
|-pom.xml
Run Code Online (Sandbox Code Playgroud)

pom.xml of parent

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example.project</groupId>
    <artifactId>parent</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>parent</name>
    <modules>
        <module>child1</module>
        <module>child2</module>
    </modules>
</project>
Run Code Online (Sandbox Code Playgroud)

pom.xml of child1

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.example.project</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <groupId>com.example.project</groupId>
    <artifactId>child1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>child1</name>
    <dependencies>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>child2</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

pom.xml of child2

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.example.project</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <groupId>com.example.project</groupId>
    <artifactId>child2</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>child2</name>
    <dependencies>
    </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

如图所示,child2是依赖性child1.child1并且child2是并行开发的.因此,在任何源代码更改之后child2,child1应该编译和部署而无需任何其他操作.但我无法成功编译child1.运行此mvn compile命令后出现child1此错误消息:

[ERROR] Failed to execute goal on project child1: Could not resolve dependencies for project com.example.project:child1: jar:1.0-SNAPSHOT: Could not find artifact com.example.project:child2:jar:1.0-SNAPSHOT -> [Help 1]
Run Code Online (Sandbox Code Playgroud)

正如我所见,maven试图搜索本地存储库child2.如果我mvn install在parent项目上运行命令,则两个项目都将添加到本地存储库.然后任何编译尝试child1都是成功的.这似乎是一种解决方案,但不方便.我想要的是编译child1时编译child1,child2没有任何安装到本地存储库.

Rob*_*lte 9

尝试mvn compile -pl :child1 -am,-pl您想要构建的项目在哪里,并-am告诉maven如果它们是多模块项目的一部分,也可以构建这些项目的依赖项.