gpt4 book ai didi

java - 在多模块项目中找不到 Artifact

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:05:25 25 4
gpt4 key购买 nike

基本上,我有一个多模块项目,例如

- ProjectA
|- Module1
|- Module2

ProjectA 的相关部分(我相信)pom.xml 是:

<modelVersion>4.0.0</modelVersion>
<groupId>com.companyName</groupId>
<artifactId>ProjectA</artifactId>
<packaging>pom</packaging>
<version>0.0.1-SNAPSHOT</version>

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

<modules>
<module>Module1</module>
<module>Module2</module>
</modules>

Module1 的 pom.xml 是:

<parent>
<groupId>com.companyName</groupId>
<artifactId>ProjectA</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>

<modelVersion>4.0.0</modelVersion>
<artifactId>Module1</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>

而依赖Module1的Module2的pom.xml如下:

<parent>
<groupId>com.companyName</groupId>
<artifactId>ProjectA</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>Module2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.companyName</groupId>
<artifactId>Module1</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
...
</dependencies>

我可以很好地构建和安装 Module1。我可以在 Module2 中从它导入类,但我无法编译 Module2:Could not find artifact com.companyName:ProjectA:pom:0.0.1-SNAPSHOT

以同样的方式,我正在构建另一个项目 ProjectB,它将包含 Module3。在 Module3 pom.xml 中:

<dependency>
<groupId>com.companyName.ProjectA</groupId>
<artifactId>Module1</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

但是,我无法将它导入到我的 .java 文件中,因为 com.companyName.ProjectA 不可用,IntelliJ 警告我。我究竟做错了什么?我几乎尝试了相关多模块项目问题中的所有配置。谢谢!

更新:控制台输出已更改为:

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /Users/user/workspace/project-name/Module2/src/main/java/com/companyName/ProjectA/Module2/users/UsersDAO.java:[3,39] package com.companyName.ProjectA.Module1 does not exist
[ERROR] /Users/user/workspace/project-name/Module2/src/main/java/com/companyName/ProjectA/Module2/users/UsersDAO.java:[9,6] cannot find symbol...

更新:有趣的是,删除:

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

来自父项目 (ProjectA) 使项目再次可构建。但是,我需要它(出于明显的原因)是否有解决方法?谢谢!

最佳答案

两个(或所有)项目都是 Spring Boot 项目。这不是普通的 jar ,而是具有不同结构的可执行 jar 。您不应该在另一个 Spring Boot jar 中包含一个 Spring Boot jar。

如何处理这个问题在 section 中有解释。在引用指南中。

基本上,您需要为 Module1

显式配置 2 个 Artifact
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>

或者,如果 Module1 甚至不是一个可执行应用程序,而只是一个库,请不要为此使用 Spring Boot Maven 插件。

关于java - 在多模块项目中找不到 Artifact ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41105954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com