java - 如何让 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。
解决方案
推荐阅读
- probability - 挑选五张牌时,抽到四种不同花色的概率是多少?
- ios - iOS Widget 配置文件问题:如何使用 iOS WidgetKit 正确分发
- python - pandas - 在输入和输出日期格式已知的情况下更改日期格式
- c++ - 在 abseil::node_hash_map 中选择一个随机(ish)元素?
- java - 通过 JNA 从活动窗口中提取 URL(如果 Chrome 或 IE 已打开)
- mysql - 在包含数百万行和多个过滤器的表上创建哪些索引
- ionic-framework - 在我的 ionic 应用程序中使用“NPM install”时,它会给出这样的错误,这在 stackoverflow 或 github 中几乎没有参考。我不知道该怎么办
- reactjs - React Native 下拉选择器一次只显示 3 个项目
- mongodb - MongoDB:使用用户 ID 查找项目
- android - 当在android WebView中长按时,哪种方法更适合在屏幕上的特定位置显示菜单?