我有一些不是从任何存储库获得的jar文件。我将这些jar文件放在src目录的WEB-INF\lib文件夹中。有没有办法在不指定jar文件的实际路径的情况下将这些作为依赖项添加到POM中(相对路径就可以了..)?
发布于 2012-04-03 18:36:36
您可以按如下方式定义依赖关系:
<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执行此操作。
发布于 2012-04-03 18:00:02
您应该在本地存储库中安装这些文件。理想情况下,您在本地计算机或远程服务器(Nexus、Artifactory、Archiva)上安装了一个共享存储库,并将jars部署到该存储库。
要在本地安装文件,可以使用以下命令(取自Maven install plugin网站):
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 Install插件的更多信息,请查看他们的website。
发布于 2012-04-03 18:01:59
正如Guillaume正确指出的那样,只需将jars安装到本地/公司存储库中即可。
如果由于某种原因无法实现,请使用${basedir}
property
https://stackoverflow.com/questions/9990872
复制相似问题