我使用的Maven依赖项需要设置一个远程存储库。在同一项目中,我使用的是自定义构建的JAR,并尝试将其也添加为依赖项。问题是我收到错误消息说Maven在远程存储库中找不到我的自定义JAR。
在我的POM中,我有多个依赖项,包括我自定义构建的依赖项和需要远程存储库(融合)的依赖项。我曾尝试将自定义依赖项放在POM中,但这没有帮助。我尝试从POM中删除存储库,但没有得到关于我的自定义依赖项的错误,但对于远程依赖项却出现了错误。
我在Maven Docker容器中运行代码。我尝试使用Bash shell运行Docker容器并且不使用Maven命令,然后在容器内手动运行Maven命令,并手动检查~/.m2/repository
并确认我的自定义构建JAR在那里。
运行一个交互式Maven容器:
docker run -it --rm --name ProcessedObsGen -v "$(pwd)":/usr/src/mymaven \
-w /usr/src/mymaven maven:3.3-jdk-8 /bin/bash
在Docker容器中:
mvn clean install:install-file \
-Dfile=/usr/src/mymaven/libs/daas-utilities-0.0.1-SNAPSHOT.jar \
-DgroupId=atlas -DartifactId=daas-utilities -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar
mvn exec:java -Dexec.mainClass="atlas.processed_obs_generator.App"
ls ~/.m2/repository
pom.xml
<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>
<groupId>atlas</groupId>
<artifactId>processed-obs-generator</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>processed-obs-generator</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.10.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
<version>1.9.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>atlas.daas-utilities</groupId>
<artifactId>daas-utilities</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-avro-serializer</artifactId>
<version>5.0.0</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>confluent</id>
<url>https://packages.confluent.io/maven/</url>
</repository>
</repositories>
</project>
我使用以下命令将代码作为Docker容器运行:
docker run -it --rm --name ProcessedObsGen -v "$(pwd)":/usr/src/mymaven \
-w /usr/src/mymaven maven:3.3-jdk-8 mvn clean install:install-file \
-Dfile=/usr/src/mymaven/libs/daas-utilities-0.0.1-SNAPSHOT.jar \
-DgroupId=atlas -DartifactId=daas-utilities -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar; \
mvn exec:java -Dexec.mainClass="atlas.processed_obs_generator.App"
我得到错误:
无法在项目processing-obs-generator上执行目标:无法解析项目图集的依赖项:processed-obs-generator:jar:0.0.1-SNAPSHOT:找不到工件atlas.daas-utilities:daas-utilities:jar:融合中的0.0.1-SNAPSHOT(https://packages.confluent.io/maven/)
我还尝试下载融合的jar,将其放置在与自定义jar相同的位置,以相同的方式安装,然后从pom中删除远程存储库。然后,我说的ClassNotFoundException融合类出现错误。
我能够解决。
我重建了包含依赖项的实用程序jar。请参阅使用Maven在jar中包含依赖项。
尽管删除了一些未使用的依赖项,但我的pom基本保持不变。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>atlas</groupId>
<artifactId>daas-utilities</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-avro-serializer</artifactId>
<version>5.0.0</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>confluent</id>
<url>https://packages.confluent.io/maven/</url>
</repository>
</repositories>
我将自定义的jar放在$ {project.basedir} / libs中。
我调整了docker run命令中的maven命令,使其包含具有依赖性的jar。我还发现,mvn install:install-file ...
只是安装了jar,而没有(正如我假设的那样)也正在安装您的项目。因此,我mvn clean install
在执行命令之前在末尾添加了另一个命令。
docker run -it --rm --name ProcessedObsGen -v "$(pwd)":/usr/src/mymaven -w /usr/src/mymaven maven:3.3-jdk-8 mvn clean install:install-file -Dfile=/usr/src/mymaven/libs/daas-utilities-0.0.1-SNAPSHOT-jar-with-dependencies.jar -DgroupId=atlas -DartifactId=daas-utilities -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar; mvn clean install; mvn exec:java -Dexec.mainClass="atlas.processed_obs_generator.App"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句