如何告诉Maven打包依赖的jar文件

3

我想使用Jmathplot.jar

我尝试将其作为依赖项

<dependency>
      <groupId>jmathplot</groupId>
      <artifactId>jmathplot</artifactId>
      <version>1.0</version>
      <scope>system</scope>
      <systemPath>${project.basedir}/lib/jmathplot.jar</systemPath>
    </dependency>

但是当我安装时出现了这个错误:
Some problems were encountered while building the effective model for com.NResearch:dable-start-tRisk:jar:0.1-SNAPSHOT 
[WARNING] 'dependencies.dependency.systemPath' for jmathplot:jmathplot:jar should not point at files within the project directory, ${project.basedir}/lib/jmathplot.jar will be unresolvable by dependent projects @ line 44, column 19 

请问我该如何解决这个问题?

编辑1:

我无法更改Maven以将所有依赖的jar包合并为一个单独的jar包。因为它需要上传到一个Web项目中。


1
使用汇编插件 -> https://dev59.com/jnRB5IYBdhLWcg3wl4Sc#574650 - Abe
2个回答

1
"Dependent"表示使用你的项目,"dependency"表示被你的项目使用。
这里的真正错误是在一个只有你的项目能够可靠找到的文件夹中。即使你的依赖项知道如何在本地仓库中找到你的构件,它们也不知道你的构件的源代码在哪里,因此无法找到。您可以通过将更改为绝对路径来解决该问题。它仍然可以被参数化,但请使用而不是隐式属性(例如<${project.basedir}>)。
最好通过将安装到公司仓库中来摆脱依赖项,以便像“正常”工件一样使用。但如果你必须把你的工件分发到你公司仓库之外,那可能不是一个有用的选项。如果能够直接部署到Maven中央仓库,那就更好了。"
作为最后的选择,您可以选择捆绑 依赖项(而不是 被依赖项)。您可以这样做:
  • 使用 Maven Shade Plugin。它允许您选择 要包含的软件包,这可能有助于仅捆绑 jmathplot(而不是其他依赖项)。
  • 使用 Maven Assembly Plugin。它有一个预定义描述符,适用于 "带有依赖项的 JAR",这将适合您的用例。您可以基于该示例创建自己的描述符,并设置 dependencySets.dependencySet.scope=system 以仅包括给您带来麻烦的 system 依赖项。

-1

最好的方法是在本地存储库中安装您的依赖项。操作步骤如下:

1)使用项目源代码,使用mvn install命令将其安装到本地存储库中。

2)如果您没有源代码,请使用this将其安装到本地存储库中。

希望这有所帮助。

注:您是否在围绕此问题进行垃圾邮件广告?(请参见此处:JMathPlot what is the Maven dependency code please


这个mvn命令需要在我的Windows电脑上安装吗?我需要从命令窗口调用吗?我希望我可以在Eclipse中完成这个操作。 - ManInMoon
安装Maven请参见此链接您可以使用启动配置从Eclipse中执行相同的命令 -> 新建启动配置 -> Maven。 - Vokail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接