首页 > 解决方案 > 如何让 maven 在存储库中获取我的本地 jar?

问题描述

我正在编写一个PACK-A被另一个 ( ) 消耗的包 ( PACK-B)。对于本地开发,我想使用一个本地 jar 生成PACK-A并在PACK-B.

工作流程将是

  1. 光盘PACK-A;mvn clean; mvn package
  2. 光盘PACK-B; mvn clean; mvn package(但拉入本地PACK-Ajar 文件)

我认为做到这一点的方法是通过文件中的<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>目录写错了?

此外,我已经通过反编译器确认该服务确实可以使用我的更改进行编译。它只是没有被我的消费者接受。

标签: javamaven

解决方案


对于本地开发,我想使用从 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。


推荐阅读