我有一个Java代码,我在其中使用Maven和本地系统添加了JAR。现在,当我在不同的系统上运行它时,缺少本地JAR。如何将所有内容添加到Maven并删除本地类路径?
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.memeanalytics</groupId>
<artifactId>kafka-consumer-storm</artifactId>
<packaging>jar</packaging>
<version>1.1.0</version>
<name>HibernateExample</name>
<url>http://maven.apache.org</url>
<repositories>
<repository>
<id>github-releases</id>
<url>http://oss.sonatype.org/content/repositories/github-releases/</url>
</repository>
<repository>
<id>clojars</id>
<url>http://clojars.org/repo</url>
</repository>
<repository>
<id>cloudera-repo-releases</id>
<url>https://repository.cloudera.com/artifactory/repo/</url>
</repository>
</repositories>
<dependencies>
<!-- <dependency> <groupId>net.wurstmeister.storm</groupId> <artifactId>storm-kafka-0.8-plus</artifactId>
<version>0.4.0</version> </dependency> -->
<dependency>
<groupId>org.xerial.snappy</groupId>
<artifactId>snappy-java</artifactId>
<version>1.1.1.3</version> <!-- was 1.1.0-M3 -->
</dependency>
<dependency>
<groupId>org.apache.storm</groupId>
<artifactId>storm-kafka</artifactId>
<version>0.9.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.sd.dwh.kafka.storm.Invoker</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
答案 0 :(得分:1)
我不知道你当地的JAR&#34;是什么意思。如果你的意思是混合使用Maven依赖项并手动将JAR添加到IDE中,那么这是一个非常糟糕的主意。您是否使用Maven。如果你使用Maven,一切都应该是Maven依赖。将来,您需要将每个手动添加的jar都由Maven管理,方法是将其添加到本地存储库中: https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html 将它添加到本地存储库后,您可以将其作为依赖项添加到pom.xml中,就像使用Maven central中的所有其他依赖项一样。
如果您与其他人或其他计算机共享该项目,则会遇到您正在讨论的问题。在团队中(或在本地网络内),您通常会运行repository manager Nexus。当有新的依赖项手动添加(并安装到本地存储库)时,通常将其部署到Nexus,它充当本地网络和Maven中心之间的代理。然后,您团队或本地网络中的每个人都可以找到这些依赖关系。
答案 1 :(得分:0)
最简单的修复尝试是:
1.记下您手动添加到类路径的所有jar /依赖项(使用IDE或其他方式)
2.使用maven中心搜索工具(http://search.maven.org/)在公共存储库中找到这些依赖项(当然是逐个)。您使用在线maven搜索找到的结果将包含这些依赖项{1}的pom片段。将它们复制并粘贴到现有的pom.xml依赖项部分。
3.删除基于IDE的类路径条目。
当然,只有当这些依赖项存在于公共存储库中时才能使用。
答案 2 :(得分:0)
您可以为本地开发设置一个maven存储库管理器,例如nexus,它可以代理maven中央存储库,您可以在其中部署自己的库。当您需要在另一个环境中开发时,您可以从本地maven存储库获取依赖项。