Java 项目对另一个项目的依赖

Sac*_*hin 0 java maven

我有一个 Maven 项目(Proj1)。在我的java类中,我必须调用另一个maven proj(proj2)的方法。

在这里,我收到各种编译时错误,因为该方法在我当前的项目(proj1)中不可用。为了解决这个问题,我获取了整个方法代码并将该方法粘贴到我当前的 java 类中。现在我的项目中可以使用该方法。但随后该方法再次调用其他类中的少数其他代码,这些代码在我当前的项目中再次不可用。我再次需要复制并粘贴其他类中的所有依赖代码。这种情况一直持续下去,并且存在循环依赖,所以我想知道如何解决这个错误。为了解决这个问题,我有几个选择。

  1. 从 proj2 获取所有类的源代码,从中创建一个 jar 并将该 jar 包含在我的类路径中 这解决了一些错误,但第三方 jar 中的一些类仍然给出错误。
  2. 现在我正在计划第二个选项,其中我有 proj2 的 pom.xml 。我以此为基础进行构建。这样所有必需的 jar 都将从存储库下载。该项目的输出再次是名为 proj2.jar 的 jar。

现在我的问题是

  1. 如果我在代码中仅包含 proj2.jar 那么它会解决所有依赖关系吗?
  2. 或者我需要手动添加 proj1 类路径中 proj2 中的所有 jar
  3. 或者我需要添加 proj2 的 src 以及 proj2.jar 中的 jar ?
  4. 或者有比上述选项更好的方法吗?

Rud*_*koŭ 5

让你所有的项目都使用maven。将 pom.xml 添加到项目的根目录,包含以下标头(我不知道你的打包结构,所以com.sachin是占位符。你可以要求 IDE 为你添加 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.sachin</groupId>
    <artifactId>Proj2</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>My Proj2</name>
Run Code Online (Sandbox Code Playgroud)

添加相同的标头Proj1并添加依赖项 from Proj1to Proj2

<dependency>
    <groupId>com.sachin</groupId>
    <artifactId>Proj2</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

之后maven build Proj2将作为 jar 依赖项添加到Proj1.

如果我在代码中只包含 proj2.jar 那么它会解决所有依赖关系吗?

如果您proj2.jar有使用的依赖项- 那么是的pom.xml,它们将在使用 Maven 构建期间获取。proj2.jarproj1

关于Maven依赖机制的官方文档