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

时间:2010-09-22 02:25:26

标签: java maven-2 netbeans jar

我不想在Maven存储库(本地/远程)中安装几个jar。特别是我有几个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打开/编辑时如何将它们包含到我的项目中?

4 个答案:

答案 0 :(得分:43)

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

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

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


假设

  • jar是由Maven在另一个项目中创建的,具有以下内容......

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

在Project中(想要访问jar)

  • 在项目基目录下创建repo目录
  • 对于每个本地访问的jar ...
    • 为groupID的每个级别添加目录(例如/ repo / com / foo
    • 在没有版本的情况下添加jar名称(aka 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>
    

重建

  • 点击pom.xml - &gt;以 - &gt;运行Maven build

答案 1 :(得分:22)

您是否考虑将这两个JAR添加为system dependencies?如,

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

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

答案 2 :(得分:13)

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

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

答案 3 :(得分:7)

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

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

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