Java 如何在Maven项目中包含本地jar文件

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3765903/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-14 04:36:40  来源:igfitidea点击:

How to include local jar files in Maven project

javamaven-2netbeansjar

提问by cometta

I do not want to install a few jars into a Maven repository (both local/remote). In particular I have a few jar files located in

我不想将几个 jars 安装到 Maven 存储库(本地/远程)中。特别是我有几个 jar 文件位于

c:\work\projects\myapp\src\main\webapp\WEB-INF\lib\test.jar

c:\work\projects\myapp\src\main\webapp\WEB-INF\lib\test2.jar

How to include them into my project when open/edit with NetBeans?

使用 NetBeans 打开/编辑时如何将它们包含到我的项目中?

采纳答案by The Alchemist

Have you considered adding those two JARs as systemdependencies? e.g.,

您是否考虑过将这两个 JAR 添加为system依赖项?例如,

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>sun.jdk</groupId>
      <artifactId>tools</artifactId>
      <version>1.5.0</version>
      <scope>system</scope>
      <systemPath>${java.home}/../lib/tools.jar</systemPath>
    </dependency>
  </dependencies>
  ...
</project>

Just a word of note, this is NOT recommended and should be used very sparingly, if ever.

请注意,这是不推荐的,如果有的话,应该非常谨慎地使用。

回答by Stephen C

In the past, I've done this by creating a "local" repository directory tree in the project itself, and referring to it in the POM by declaring a local repository with a project relative path.

过去,我通过在项目本身中创建一个“本地”存储库目录树,并通过声明具有项目相对路径的本地存储库在 POM 中引用它来完成此操作。

But that is a hack. (Maybe not so hacky - per @Pascal's comment. I'm still a bit of a Maven novice, despite using it for a year or so.)

但这是一个黑客。(也许不是那么老套 - 根据@Pascal 的评论。尽管使用了一年左右,我仍然是一个 Maven 新手。)

回答by E L Rayle

Although it works to use the systemPath reference, it is better to create a local repository. And fortunately, it is easy to do.

尽管使用 systemPath 引用可以工作,但最好创建一个本地存储库。幸运的是,这很容易做到。

Creating a local repository holding jars not available in a public repository

创建包含公共存储库中不可用的 jar 的本地存储库

NOTE: I use Eclipse, so some of the instructions are specific to Eclipse. Most are easily generalizable.

注意:我使用 Eclipse,所以一些说明是特定于 Eclipse 的。大多数很容易推广。



Assumptions

假设

  • The jar was created by Maven in another project with the following...

    <groupId>com.foo</groupId>
    <artifactId>test</artifactId>
    <version>0.1.1</version>
    <packaging>jar</packaging>
    
  • 该 jar 是由 Maven 在另一个项目中使用以下内容创建的...

    <groupId>com.foo</groupId>
    <artifactId>test</artifactId>
    <version>0.1.1</version>
    <packaging>jar</packaging>
    


In Project (that wants to access the jars)

在项目中(想要访问罐子)

  • Create repo directory just off the project base directory
  • For each jar to be accessed locally...
    • add directories for each level of the groupID (ex. /repo/com/foo)
    • add jar name (aka artifactId) without the version (ex. /repo/com/foo/test)
    • add directory for the version of the jar (ex. /repo/com/foo/test/0.1.1)
    • put the jar in that directory (ex. /repo/com/foo/test/0.1.1/test-0.1.1.jar)
  • 在项目基本目录外创建 repo 目录
  • 对于要在本地访问的每个 jar...
    • 为 groupID 的每个级别添加目录(例如 /repo /com/foo
    • 添加不带版本的 jar 名称(又名 artifactId)(例如 /repo/com/foo /test
    • 添加 jar 版本的目录(例如 /repo/com/foo/test /0.1.1
    • 将 jar 放在该目录中(例如 /repo/com/foo/test/0.1.1 /test-0.1.1.jar


In pom.xml (for the project that wants to access the jars)

在 pom.xml (对于想要访问 jars 的项目)

  • Define the local repository

    <repositories>
      <repository>
        <id>data-local</id>
        <name>data</name>
        <url>file://${project.basedir}/repo</url>
      </repository>
    </repositories>
    
  • Add the dependency on the local jar. From our example above, this would be...

    <dependency>
      <groupId>com.foo</groupId>
      <artifactId>test</artifactId>
      <version>0.1.1</version>
    </dependency>
    
  • 定义本地存储库

    <repositories>
      <repository>
        <id>data-local</id>
        <name>data</name>
        <url>file://${project.basedir}/repo</url>
      </repository>
    </repositories>
    
  • 添加对本地 jar 的依赖。从我们上面的例子来看,这将是......

    <dependency>
      <groupId>com.foo</groupId>
      <artifactId>test</artifactId>
      <version>0.1.1</version>
    </dependency>
    


Rebuild

重建

  • Rt click pom.xml -> Run as -> Maven build
  • Rt 点击 pom.xml -> Run as -> Maven build

回答by Eric

None of the other answers worked for me. I had to run a slightly different command...

其他答案都不适合我。我不得不运行一个稍微不同的命令......

mvn deploy:deploy-file -Durl=file:///path/to/yourproject/repo/ -Dfile=mylib-1.0.jar -DgroupId=com.example -DartifactId=mylib -Dpackaging=jar -Dversion=1.0

See complete steps in this article: https://devcenter.heroku.com/articles/local-maven-dependencies

请参阅本文中的完整步骤:https: //devcenter.heroku.com/articles/local-maven-dependencies