java – 编译多模块maven项目而无需安装到本地存储库
发布时间:2020-12-15 04:45:04 所属栏目:Java 来源:网络整理
导读:我的多模块maven项目中有编译(和打包)问题.编译两个项目中的一个项目时出现问题,这两个项目是兄弟项目并包含在父项目中,另一个项目依赖于另一项目.为简单起见,我在这里草绘项目文件夹结构和pom.xml内容. 文件夹结构 -parent||-child1| |-src| | |-main| | |-
我的多模块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> 如图所示,child2是child1的依赖项. child1和child2是并行开发的.因此,在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.如果我在父项目上运行mvn install命令,则两个项目都将添加到本地存储库.然后任何编译child1的尝试都是成功的.这似乎是一种解决方案,但不方便.我想要的是编译child1,同时编写child1和child2而无需安装到本地存储库. 解决方法
尝试mvn compile -pl:child1 -am,其中-pl是你想要构建的项目,-am告诉maven构建这些项目的依赖项,如果它们是multimodule项目的一部分的话.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |