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

标签 java maven pom.xml multi-module

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

文件夹结构

-parent
|
|-child1
| |-src
| |  |-main
| |     |-java
| |        |-Child1Class.java
| |-pom.xml
|
|-child2
| |-src
| |  |-main
| |     |-java
| |        |-Child2Class.java
| |-pom.xml
|
|-pom.xml

父级的pom.xml

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

child1的pom.xml

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

child2的pom.xml

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

如上所示,child2child1 的依赖项。 child1child2 是并行开发的。所以在child2的任何源代码改变后,child1应该被编译和部署,而不需要任何额外的操作。但是我无法成功编译child1。在 child1 上运行 mvn compile 命令后出现此错误消息:

[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]

如我所见,maven 尝试在本地存储库中搜索 child2。如果我在 parent 项目上运行 mvn install 命令,两个项目都会添加到本地存储库。然后任何编译 child1 的尝试都会成功。这似乎是一种解决方案,但并不方便。我想要的是在编码 child1child2 时编译 child1 而无需安装到本地存储库。

最佳答案

试试 mvn compile -pl :child1 -am,其中 -pl 是你想要构建的项目,-am 告诉maven 构建这些项目的依赖关系,如果它们是多模块项目的一部分。

关于java - 编译多模块maven项目而不安装到本地存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28096151/

相关文章:

java - 正则表达式性能问题

java - 创建jar文件时@Transactional(rollbackfor={null})

maven - 将快照 Artifact 发布到 azure devops Artifact

maven - apache camel - 打包一个可执行的jar

java - Maven 依赖冲突

java - 如何修改pom文件以将src/test/java文件添加到具有依赖关系的maven jar

java - {Filter}ing 是否比 Lucene 中的 {Query}ing 更快?

java - 执行顺序,静态 block

java - 如何制作可点击的图片?

java - 如何从 Maven 部署 jar?