在 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>
本质上,您将范围指定为<system>
以指示maven 不要在存储库中查找它,<systemPath>
以指示它在哪里。这将是一个绝对路径,但可以采用 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的主要内容,如果未能解决你的问题,请参考以下文章
在tomcat类路径中包含web-inf / lib中的目录
将 JAR 添加到 IntelliJ 中的 WEB-INF/lib 目录的正确过程是啥