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

2022-09-01 10:08:08

我不想将一些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

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


答案 1

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

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

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


假设

  • 该罐子是由Maven在另一个项目中创建的,其中包含以下内容...

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

在项目中(想要访问 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)

在 pom.xml(用于想要访问 jar 的项目)

  • 定义本地存储库

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

重建

  • Rt click pom.xml -> 以 -> Maven build 的身份运行

答案 2

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

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

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


推荐