我希望将一个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
使用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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。