我有几个jar文件,我没有从任何存储库获取。我有这些jar文件在WEB-INF \ lib文件夹中的src目录。有没有办法在POM中添加这些作为依赖项而不指定jar文件的实际路径(相对路径很好..)?
答案 0 :(得分:20)
您可以按如下方式定义依赖项:
<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。
你会为你拥有的每个这样的罐子做到这一点。
答案 1 :(得分:4)
您应该在本地存储库中安装这些文件。理想情况下,您在本地计算机或远程服务器(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中,你可以将这些jar作为常规依赖项引用。有关Maven安装插件的更多信息,请查看他们的website。
答案 2 :(得分:3)
使用Apache Maven Dependency Plugin
mvn dependency:copy-dependencies
您会发现target/dependencies
文件夹中包含所有依赖项,包括传递。mvn dependency:purge-local-repository
然后重试。使用eclipse:
答案 3 :(得分:1)
正如Guillaume正确指出的那样,只需将jar安装到本地/企业存储库中即可。
如果出于某种原因无法做到这一点,请使用${basedir}
property
答案 4 :(得分:1)
您可以使用$ {project.baseuri}来获取项目的路径,然后从那里转到WEB_INF / lib目录。 This page列出了您可以在pom中访问的此类属性。