如何告诉Maven捆绑依赖的罐子

时间:2013-10-28 17:09:05

标签: java maven

我想使用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 

我怎么能绕过这个呢?

EDIT1:

我无法改变Maven将所有依赖的jar包含在一个jar中。这被上传到网络项目。

2 个答案:

答案 0 :(得分:1)

“Dependent”正在使用您的项目,您的项目使用“依赖”。

这里的真正错误是jmathplot.jar位于一个文件夹中,您的项目实际上只能找到它。即使您的家属知道如何在本地存储库中找到您的工件,他们也不会知道工件的源位置,因此无法找到lib/jmathplot.jar。您可以通过将systemPath更改为绝对路径来解决此问题。它仍然可以参数化,但请使用properties而不是隐式属性(例如${project.basedir}

最好通过将systemPath安装到公司存储库中来摆脱jmathplot依赖关系,因此可以使用类似“普通”的工件。但是,如果您必须将工件分发到公司存储库的范围之外,那么这可能不是一个有用的选项。如果jmathplot只获得deployed to the Maven central repository,那就更好了。

作为最后的手段,您可以选择捆绑依赖项(而非依赖项)。你可以这样做:

答案 1 :(得分:-1)

最好的方法是在本地存储库上安装依赖项。要做到这一点:

1)使用项目源,使用mvn install

安装到本地存储库

2)如果您没有源代码,请使用this

安装到本地存储库

希望有所帮助

nota:你在围绕这个问题发垃圾邮件,对吗? (见这里:JMathPlot what is the Maven dependency code please