java - 我怎样才能告诉 Maven 捆绑依赖的 jar

标签 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 

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

编辑1:

我无法更改 Maven 以将所有依赖的 jar 包含到一个 jar 中。因为这是上传到网络项目。

最佳答案

“Dependent”是使用你的项目,“dependency”是被你的项目使用。

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

最好通过将 jmathplot 安装到公司存储库中来摆脱 systemPath 依赖关系,这样它就可以像“普通” Artifact 一样使用。但是,如果您必须将 Artifact 分发到公司存储库无法访问的地方,那么这可能不是一个有用的选择。如果 jmathplot 得到 deployed to the Maven central repository 就更好了.

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

关于java - 我怎样才能告诉 Maven 捆绑依赖的 jar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19640914/

相关文章:

java - 即使从未调用 persist,@Version 列也会更新

java - 非法状态异常 : getwriter() has already been called for this response

java - 当继承版本时,如何以编程方式查找 Maven 依赖项的确切版本?

java - 线程 "main"java.lang.NoClassDefFoundError : org/codehaus/jackson/JsonParseException 中的异常

maven - 什么是 'plexus',它与 maven 有什么关系?

java - 仅使用 for 循环删除 ArrayList 中的重复项

java - 将记录从数组插入到 Sqlite 数据库 (Android)

java - 将 EJB3 与 Spring 集成

eclipse - Java EE 6 的 Maven 与 Eclipse 项目 Facets

git - 强制 git 自定义 merge 驱动程序以 merge pom.xml (maven) 文件