开发者社区> 问答> 正文

将Spring Boot Maven项目添加为对另一个项目的依赖关系(本地)

我希望将一个SB项目用作另一个项目中的依赖项-而不使用父pom和本地。在使用父pom和指定模块之前,我已经完成了此操作,但是我正在考虑拆分存储库,并且需要在没有父pom的情况下实现相同的目的。

我发现了一些SO帖子,概述了这样做的方法,但是似乎没有一个适合我。它们都涉及mvn install到工件,以便可以在本地仓库中使用它。这似乎对我有用,直到无效为止。

注意:我在公司环境中工作,我确实打算将这些jar部署到我们的内部Nexus回购中,但是,我想先弄清楚本地的发展,然后再深入研究。

我的设置是两个空的start.spring.io项目(名称不同)。

.
├── test-application
│   ├── pom.xml
│   └── src
│       └── main
│           ├── java
│           │   └── com
│           │       └── example
│           │           └── testapplication
│           │               ├── TestApplication.java
│           │               └── TestClientConfig.java
│           └── resources
│               └── application.properties
│   
└── test-client
    ├── pom.xml
    └── src
        └── main
            ├── java
            │   └── com
            │       └── example
            │           └── testclient
            │               ├── TestClient.java
            │               └── TestClientApplication.java
            └── resources
                └── application.properties

在一个项目中test-client,我定义了一个新类

// TestClient.java

public class TestClient {

    private String value;

    public TestClient(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

只是一些基本测试类,我将在消费者应用程序中将其转换为bean。

接下来,我运行mvn clean install并验证它是否在我的.m2/repository文件夹中

现在在 test-application

//pom.xml

<dependency>
    <groupId>com.example</groupId>
    <artifactId>test-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

IntelliJ自动导入,一切看起来很好,没有红色。

接下来,在一个新文件中,TestClientConfig.java我开始实现我的客户端:

IntellJ从依赖项中选择新类并提出建议。但是,当我尝试导入时,效果并不理想。

它将导入完整的程序包名称,然后无法识别它:

而且我无法添加导入语句。

所以我被困在这一点上。我曾尝试在IntelliJ中完善一些设置,以将已编译的jar包含为库或添加模块,但似乎没有任何功能可以充分发挥作用,并且这些选项似乎有些怪异。

以下是该zip的链接:https : //drive.google.com/open? id =13XGVzICO_QHn_ihM7NFtK3GobAxeqLYf

问题来源:Stack Overflow

展开
收起
montos 2020-03-26 19:22:16 724 0
1 条回答
写回答
取消 提交回答
  • 使用Maven模块,IntelliJ IDEA将解决源而不是jar的依赖关系。通过您的设置,可以从jar中解决依赖项。

    该.class文件需要在罐子代替的根BOOT-INF,如果你想依靠这个罐子中的其他项目。之所以进入这些类,是BOOT-INF因为您正在使用构建可执行jar的spring-boot-loader应用程序。

    本文档介绍了如何解决此问题:

    为了与另一个项目共享类,最好的方法是创建一个包含共享类的单独的jar,然后使其成为依赖它们的所有模块的依赖项。

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

    这将创建两个jar,一个带有后缀exec作为可执行jar,另一个是我们可以包含在其他项目中的更典型的jar。

    回答来源:Stack Overflow

    2020-03-26 19:23:28
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多

相关镜像