首页 > 解决方案 > 如何让 Java 项目使用自定义库,同时保留对源代码的访问权限,而无需手动构建库 JAR?

问题描述

我有几个 Java gradle 项目都需要解释相同的数据,所以我想创建一个库来在项目之间共享。

通常(在 C++ 中),我会为库创建一个新项目,然后将其作为 git 子模块包含在每个其他项目中,然后包含构建库并依赖它的指令。我非常喜欢这个,因为我可以在每个项目中看到库的源代码并对其进行调试,这很有帮助,因为库和其他项目是一起开发的。我可能会在库中发现一个错误,或者我只是想改变一些东西,这很容易做到。

需要明确的是,我想做的是将我的 Java 库作为子模块包含在内并编辑我的build.gradle文件,以便在我构建项目时,它将构建并“链接”该库,但我想保留访问和修改库的源。我不想在每次更改库时都打开不同的项目、编译 JAR 并将其复制到依赖项目录。我还想“静态”链接库,这样我就可以只部署一个 JAR。

在 Java 中,这似乎不能很好地工作。我试图只包含源代码,但遇到了包名称问题。如果我的库为,则由于目录已存在com.acme.lib,因此我无法将其包含在内。com.acme.proj1

有关更多详细信息,我的图书馆是这样布置的

src
└── main
    └── java
        └── com
            └── acme
                └── Library.java

我的项目是这样布置的

src
└── main
    └── java
        └── com
            └── acme
                └── Project1.java

鉴于大多数包结构是相同的,我无法同时构建两者,我会从其中一个或另一个中获取包名称错误。

在我的研究中,我还没有找到任何其他方法来做到这一点。这可能吗?或者我应该完全不同地处理这个问题并使用我不知道的 Java 约定?

如果重要的话,我正在使用 IntelliJ IDEA。

标签: javagradlelib

解决方案


推荐阅读