【问题标题】:Maven: including utils in Java projectMaven:在 Java 项目中包含 utils
【发布时间】:2020-03-01 21:23:16
【问题描述】:

案子很简单,但我还是解决不了:

INFO:我所说的所有“项目”都是 Maven 项目。

我现在正在处理某个 Java 项目。最近在这个项目中写了很多通用的代码。我还有一个“utils”项目,其中包含一些 Java 实用程序,因此我决定将通用代码从我的主项目(我们称之为“A”)移动到 utils 项目。这很实用,因为:

  1. 我在 A 中的杂乱更少
  2. 我可以在其他项目中重用代码,而不会将“A”的无关内容纳入范围。

问题在于,当然,utils 是一个实用程序项目,如果您愿意,也是一个库。而且它没有主类。当我尝试安装 (mvn install) 时,由于没有正确的入口点,因此没有包含任何源。

所以,在尝试了很多事情之后,我担心我完全错误地处理了这个问题,这就是我来到这里的原因。除了简单的用例(例如,包括来自 Maven Central 的外部库)外,我对 Maven 没有任何经验。因此我的问题是:

需要哪些步骤才能使我的 utils 库在项目“A”中可用?

我不打算在 Maven Central 或任何其他远程存储库上安装我的项目。我只希望它在我当地的 mvnrepo 中可用。我知道这意味着我必须克隆我的 utils 项目并将其安装在我尝试使用项目“A”的任何地方。

编辑 1:我正在使用 Java 11 (openjdk11)、Maven 3.6.0、带有 Maven Helper 插件的 IntelliJ IDEA Ultimate 以及 GitHub,以便让我的项目在任何地方都可用。

另外,我刚刚检查了项目“A”是否正确包含来自 utils 项目的 jar,并且实际上将其添加到类路径中(但 jar 是空的)。因此,问题似乎确实出在 utils 项目中。

【问题讨论】:

    标签: java maven jar class-library


    【解决方案1】:

    maven install 会将您编译的代码放在本地 maven 存储库 (.m2/repository) 中。

    Sources被源插件打包。

    mvn source:jar
    

    【讨论】:

    • 正如我已经指出的,mvn install 产生一个空罐子。就我而言,源代码打包仅用于更深入地了解代码(例如在调试时)。如有错误请指正
    • mvn install 不应该在有填充的src/main/java/ 时给出一个空 jar。在看到您使用模块化 java 之后,根目录中的 module-info 必须导出类。也许先从一个示例 Maven 项目开始。
    • 目前,utils 项目旨在包含更多语言的实用程序,而不仅仅是 java。这就是为什么源根(在 IntelliJ 中标记为“源根”)是 src/main/code 而 Java 根实际上是 src/main/code/com.tara.util.java。如果这确实是问题所在,我可能会找到一种解决方法,但我不确定 Maven 是否真的需要源位于 src/main/java
    • 在maven中可配置;不知道怎么做,因为我不是---。
    猜你喜欢
    • 2010-09-15
    • 1970-01-01
    • 2014-02-05
    • 2014-11-19
    • 2012-07-09
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 2014-06-30
    相关资源
    最近更新 更多