java - 如何让 maven 在存储库中获取我的本地 jar?
问题描述
我正在编写一个PACK-A
被另一个 ( ) 消耗的包 ( PACK-B
)。对于本地开发,我想使用一个本地 jar 生成PACK-A
并在PACK-B
.
工作流程将是
- 光盘
PACK-A
;mvn clean; mvn package
- 光盘
PACK-B
;mvn clean; mvn package
(但拉入本地PACK-A
jar 文件)
我认为做到这一点的方法是通过文件中的<repositories />
标签,pom.xml
所以我的POM.xml
文件看起来像这样(为简洁起见,删除了很多):
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.company.team</groupId>
<artifactId>PACK-B</artifactId>
<version>1.0.0</version>
<dependencies>
<groupId>com.company.team</groupId>
<artifactId>service-name</artifactId>
<version>0.3.0-master+17</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>service-name</id>
<url>file:///Users/username/Projects/service-name/target</url>
</repository>
</repositories>
</project>
file:///Users/username/Projects/service-name/target
是编译 ( mvn package
) 的目录service.jar
。
它没有捡起它,我已经使用反编译器确认了它。如何让 maven 在我编译的服务中使用我的本地 jar?还是我的<url>
目录写错了?
此外,我已经通过反编译器确认该服务确实可以使用我的更改进行编译。它只是没有被我的消费者接受。
解决方案
对于本地开发,我想使用从 PACK-A 生成的本地 jar 并在 PACK-B 中使用它。
为此,您“只需要”:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.company.team</groupId>
<artifactId>PACK-B</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>com.company.team</groupId>
<artifactId>PACK-A</artifactId>
<!-- same version, or which ever suits you -->
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
并运行mvn install
(另外package
将工件安装到本地存储库中)。
另请参阅:在 maven 中构建模块时如何构建依赖项目 以及mvn install in maven 究竟做了什么
这是一个“复杂领域”(多模块......),但您要实现的目标非常简单/101。
推荐阅读
- php - 如何在数字php中添加小数点
- google-apps-script - GAS - 使用 A 列作为 X 和 B 列作为 Y 绘制折线图
- ruby-on-rails - 设计:将经过身份验证的用户重定向到 Rails 5 中的单个子域
- dynamic - 在运行时从另一个程序读取非全局变量
- python - 有没有一种方法可以在 selenium 中使用请求库中的会话?
- angular - 如何解决“装饰器不支持函数调用,但调用了‘StoreModule’。”
- unity3d - 我可以旋转所有对象而不必为每个对象单独做吗?
- android - setBackgroundResource() 需要很长时间才能在 kotlin/android 中显示
- regex - Perl RegEx:“??”的含义
- tooltip - 为什么我的 AmChart XYChart 只显示多个系列的单个工具提示?