在 POM 的 WEB-INF\lib 中添加一个 jar

Posted

技术标签:

【中文标题】在 POM 的 WEB-INF\\lib 中添加一个 jar【英文标题】:Adding a jar in WEB-INF\lib in POM在 POM 的 WEB-INF\lib 中添加一个 jar 【发布时间】:2012-04-16 23:10:55 【问题描述】:

我有几个 jar 文件,我没有从任何存储库中获取这些 jar 文件。我在 WEB-INF\lib 文件夹中的 src 目录中有这些 jar 文件。有没有办法将这些作为依赖项添加到 POM 中而不指定 jar 文件的实际路径(相对路径很好..)?

【问题讨论】:

【参考方案1】:

您应该将这些文件安装在本地存储库中。理想情况下,您在本地计算机或远程服务器(Nexus、Artifactory、Archiva)上安装了一个共享存储库,并将您的 jar 部署到该存储库。

要在本地安装文件,可以使用以下命令(取自 Maven 安装插件网站):

mvn install:install-file -Dfile=your-artifact-1.0.jar \
                     [-DpomFile=your-pom.xml] \
                     [-Dsources=src.jar] \
                     [-Djavadoc=apidocs.jar] \
                     [-DgroupId=org.some.group] \
                     [-DartifactId=your-artifact] \
                     [-Dversion=1.0] \
                     [-Dpackaging=jar] \
                     [-Dclassifier=sources] \
                     [-DgeneratePom=true] \
                     [-DcreateChecksum=true]

在您的 pom 中,您可以将这些 jars 引用为常规依赖项。有关 Maven 安装插件的更多信息,请查看他们的 website。

【讨论】:

【参考方案2】:

正如 Guillaume 正确指出的那样,只需将 jar 安装到您的本地/公司存储库中即可。

如果由于某种原因无法做到这一点,请使用 $basedir property

【讨论】:

【参考方案3】:

您可以使用 $project.baseuri 获取项目的路径,然后从那里转到 WEB_INF/lib 目录。 This page 有一个此类属性的列表,您可以在 pom 中访问这些属性。

【讨论】:

【参考方案4】:

您可以按如下方式定义依赖项:

<dependency>
    <groupId>my.group</groupId>
    <artifactId>my.artifact</artifactId>
    <version>a.b</version>
    <scope>system</scope>
    <systemPath>$basedir/WEB-INF/lib/my.artifact.jar</systemPath>
</dependency>

本质上,您将范围指定为&lt;system&gt; 以指示maven 不要在存储库中查找它,&lt;systemPath&gt; 以指示它在哪里。这将是一个绝对路径,但可以采用 Maven 属性。详情here.

您将为您拥有的每个此类 jar 执行此操作。

【讨论】:

【参考方案5】:

使用Apache Maven Dependency Plugin

mvn dependency:copy-dependencies,你会发现 target/dependencies 文件夹充满了所有的依赖,包括传递。 下载依赖项时遇到问题,请使用mvn dependency:purge-local-repository 并重试。

使用eclipse:

    右键单击项目的属性。 选择部署程序集选项。 点击添加按钮。 如下选择Java Build Path Entries

    点击下一步获取以下向导:

    选择 Maven 依赖项

    点击完成

【讨论】:

为此找了两天..真的像魔术一样工作

以上是关于在 POM 的 WEB-INF\lib 中添加一个 jar的主要内容,如果未能解决你的问题,请参考以下文章

Maven 依赖项在 WEB-INF/lib 中不可见

在不编辑pom.xml的情况下向Maven添加依赖项

在tomcat类路径中包含web-inf / lib中的目录

将 JAR 添加到 IntelliJ 中的 WEB-INF/lib 目录的正确过程是啥

使用 Eclipse/Tomcat 自动将 3rd 方 jars 添加到 WEB-INF/lib

WEB-INF/lib 内容的 JBOSS 排序