首页 > 解决方案 > 如何导入jar的所有依赖项?

问题描述

我有两个 java maven 项目——eclipse 中的 abc 和 intellij idea 中的 xyz。它们有一些常见的 jar 依赖项。

在 xyz 代码中,我需要调用 abc 的 test 目录中的一些代码。因此,我将 abc 转换为 jar 并将其导入到 xyz 中。调用 abc 方法的 xyz 代码编译得很好,但是因为找不到 abc 所需的 jar 而失败。其中一些缺失的 jar 实际上存在于 xyz 中,但有些则没有。

如何让 xyz 导入 abc 所需的所有依赖项?这是重用代码的好方法吗?

标签: javamavendependencies

解决方案


这样做的正确方法:

  1. mvn install通过在“abc”文件夹中运行,将“abc”项目安装到本地 Maven 存储库中。(这将首先构建项目,然后将 JAR 和 POM 复制到本地 Maven 存储库中。)
  2. 并将其添加为“xyz”项目中的依赖项:
<dependencies>
  <dependency>
    <groupId>...</groupId>
    <artifactId>abc</artifactId>
    <version>...</version>
  </dependency>
</dependencies>

这样,“xyz”项目在类路径上也会有“abc”和“abc”的依赖。

编辑:可以通过这种方式重用测试类:

  1. 添加maven-jar-plugin以“abc”为目标的构建插件test-jar,它会创建测试类的 JAR:
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <execution>
                <goals>
                    <goal>test-jar</goal>
                </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  1. 安装“abc”(将安装常规 JAR,测试 JAR 和 POM)
  2. 添加为依赖项并引用test-jar分类器:
<dependencies>
    <dependency>
      <groupId>...</groupId>
      <artifactId>abc</artifactId>
      <version>...</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
</dependencies>

推荐阅读