Я создаю несколько пользовательских зависимостей Spring Boot Starter для приложения. Я выполнил несколько, но столкнулся с проблемой, с которой я никогда не сталкивался. И я считаю, что это связано с тем, как я упаковываю свою пользовательскую зависимость с Maven.
pom.xml для упаковываемого проекта выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.ej.gws.starters</groupId>
<artifactId>mapr-producer-spring-boot-starter</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maprfs-path>/opt/mapr/lib/maprfs-6.0.1-mapr.jar</maprfs-path>
<ojai-driver-path>/opt/mapr/lib/mapr-ojai-driver-6.0.1-mapr.jar</ojai-driver-path>
<flex-json-path>/opt/mapr/lib/flexjson-2.1.jar</flex-json-path>
</properties>
<repositories>
<repository>
<id>mapr-proxy</id>
<name>MapR Releases</name>
<url>http://<Internal Nexus Repository>.com/content/repositories/MapR/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<!-- Spring Boot Starter Dependencies -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Web Exception Handler -->
<dependency>
<groupId>com.ej.gws.starters</groupId>
<artifactId>web-exception-handler-spring-boot-starter</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!-- JSON Parser -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
<!--Kafka Client Library for MapR Streams 6.0.1-->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>1.0.1-mapr-1803-streams-6.0.1</version>
<exclusions>
<!-- Do not package maprfs jar, as per MapR Documentation -->
<exclusion>
<groupId>com.mapr.hadoop</groupId>
<artifactId>maprfs</artifactId>
</exclusion>
<!-- Exclude slf4j transitive dependency to avoid warnings about duplicates -->
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--Needed by MapR Streams, provided by system Client Library-->
<dependency>
<groupId>com.mapr.hadoop</groupId>
<artifactId>maprfs</artifactId>
<version>6.0.1-mapr</version>
<scope>system</scope>
<systemPath>${maprfs-path}</systemPath>
</dependency>
<dependency>
<groupId>com.mapr.ojai</groupId>
<artifactId>mapr-ojai-driver</artifactId>
<version>6.0.1-mapr</version>
<scope>system</scope>
<systemPath>${ojai-driver-path}</systemPath>
</dependency>
<dependency>
<groupId>net.sf.flexjson</groupId>
<artifactId>flexjson</artifactId>
<version>2.1</version>
<scope>system</scope>
<systemPath>${flex-json-path}</systemPath>
</dependency>
</dependencies>
</project>
У меня проблема с зависимостью org.apache.kafka:kafka-clients:1.0.1-mapr-1803-streams-6.0.1
.
В проекте, который строит .jar, эта зависимость выглядит следующим образом из Maven:
Но после запуска mvn install
и генерации артефакта, когда я ссылаюсь на него внутри другого приложения, эта зависимость выглядит следующим образом:
Итак, я хотел бы задать вопрос: как мне написать мои приложения pom.xml таким образом, чтобы, когда другое приложение ссылалось на него, оно импортировало точно такие же артефакты и версии?
Кроме того, чтобы уточнить, я не хочу строить банку с толстым или толстым слоем.