【问题标题】:Maven and m2e - build jar with dependencies informationMaven 和 m2e - 使用依赖信息构建 jar
【发布时间】:2013-03-09 17:58:03
【问题描述】:

我们正在使用Mavenm2e工具进行开发,今天遇到了问题。

我们的一个项目是其他项目所需的小型库,因此我们将其打包成 jar 文件并放入我们的私有 Maven 存储库。

目前,我们放在这个存储库中的所有 jar 都没有任何外部依赖项,但是我提到的这个库使用了一些外部 jar。

现在,当我将有关此 jar 的信息添加到其他 pom 时,此 jar 是从我们的私有存储库下载的,但 Maven 不会下载此 jar 所需的依赖项。

我想知道是否需要使用一些特殊的目标/向我的pom.xml 文件添加一些内容,以通知Maven 包含有关此工件所需的依赖项的信息。

编辑: 这是我将 jar 上传到我们的私有存储库时执行的工作流程:

1.我使用m2eEclipse生成jar文件

2.mvn install:install-file -DgroupId=<your_group_name> -DartifactId=<your_artifact_name> -Dversion=<snapshot> -Dfile=<path_to_your_jar_file> -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true

3.我将本地存储库中创建的文件夹复制到远程存储库

【问题讨论】:

  • 其他项目也使用maven吗?
  • 正确的方法是构建你的库并使用经典的mvn deploy 而不是手动安装 jar。生成的 pom(参见 -DgeneratePom=true)将是最低限度的,并且将包含依赖信息。

标签: java maven jar


【解决方案1】:

如果您的小型库是您所说的 maven 项目,则没有理由让 eclipse 构建 jar,然后使用 maven 安装它,然后手动复制到远程 repo。相反,您应该使用 m2e 来运行部署目标:

mvn deploy

这将导致构建 jar,然后将其直接安装到本地 maven 存储库中,然后将其部署到远程存储库。

在 Eclipse 中,这可以通过右键单击您的项目来完成,选择Run As -> Maven Build...,然后在运行配置窗口中输入Goals 输入类型deploy,然后单击Run。完成一次后,您可以使用Run As -> Maven Build 再次运行相同的配置。

【讨论】:

  • 将我的目标更改为部署到远程存储库后,我的依赖项已按应有的方式下载,但 m2e 中存在小问题。当我在 Eclipse 中展开 Maven Dependencies 时,我可以看到一些 jars(包括那些应该作为我的库的依赖项添加的那些),但是库本身显示为目录,你知道是什么原因造成的吗?
  • @Andna,如果您依赖于同一 Eclipse 工作区中的项目,其版本是当前版本,则依赖项将显示为文件夹。例如,如果您的工作区中有DependencyA,版本为1.1.0-SNAPSHOT,并且您的项目ProjectA 在同一工作区中依赖于版本1.1.0-SNAPSHOT,它会显示一个文件夹,但如果您依赖于版本@987654332 @ of DependencyA,它会显示为一个罐子。
  • 谢谢,我不知道这个功能。
【解决方案2】:

最好的方法是运行mvn deploy

您必须在 settings.xml 中将分发存储库设置为您的私有工件管理器(nexus 或工件)

查看this了解更多详情

【讨论】:

    【解决方案3】:

    我看到你在安装 jar 文件的过程中使用了-DgeneratePom=true。您需要做的是为您的工件创建一个pom.xml。在 pom.xml 中,您可以指定 jar 文件所需的依赖项。在执行install:install 插件目标时,您使用-DpomFile=pom.xml 代替。

    【讨论】:

    • 为什么不直接运行mvn deploy?他提到图书馆本身就是一个 Maven 项目......
    • @Lucas,好点子。我没有注意到图书馆本身也是一个 Maven 项目。我看到 install:install 插件是手动使用的,并假设它的 jar 文件是由非 maven 项目提供的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    相关资源
    最近更新 更多