在我的J2EE项目中,我有几个依赖项,这些依赖项在任何Maven库中都不可用,因为它们是专有库。这些库需要在运行时可用,因此必须将其复制到target/ ... /WEB-INF/lib ...
现在,我在我的POM中将它们作为系统依赖项列出,但使用这种方法的问题是,在编译过程中不会将它们复制到目标构建中。此外,这种方法也不是很优雅。
那么,在Maven中集成它们的最佳方式是什么呢?
注意:我不想创建自己的Maven存储库。
发布于 2009-07-22 11:07:39
正如您所说的,您不想建立自己的存储库,也许这会有所帮助。
您可以使用maven- install -plugin的install-file goal将文件安装到本地存储库。如果您为每个文件创建了一个带有Maven调用的脚本,并将其放在jars旁边,那么您(以及任何其他有权访问的人)就可以轻松地将jars (以及相关的pom文件)安装到其本地存储库。
例如:
mvn install:install-file -Dfile=/usr/jars/foo.jar -DpomFile=/usr/jars/foo.pom
mvn install:install-file -Dfile=/usr/jars/bar.jar -DpomFile=/usr/jars/bar.pom
或者只是
mvn install:install-file -Dfile=ojdbc14.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0 -Dpackaging=jar
然后,您可以在项目中正常引用这些依赖项。
但是,您最好的选择仍然是建立一个内部远程存储库,我建议您自己使用Nexus。如果需要,它可以在您的开发箱上运行,并且开销最小。
发布于 2012-10-31 23:05:21
对于想要快速解决此问题的人:
<dependency>
<groupId>LIB_NAME</groupId>
<artifactId>LIB_NAME</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${basedir}/WebContent/WEB-INF/lib/YOUR_LIB.jar</systemPath>
</dependency>
只需为您的库指定一个惟一的groupID和工件名称,并指向它在文件系统中的位置。你可以走了。
当然,这是一个肮脏的快速修复,只在您的机器上有效,如果您不更改库的路径的话。但有时,这就是你想要的,运行并做几个测试。
编辑:只是重新回答了问题,并意识到用户已经在使用我的解决方案作为临时解决方案。我将留下我的答案,作为对其他涉及这个问题的人的帮助。如果有人不同意这一点,请给我留言。:)
发布于 2015-12-11 17:22:56
在项目下创建一个存储库文件夹。让我们带上
${project.basedir}/src/main/resources/repo
然后,将您的自定义jar安装到此存储库:
mvn install:install-file -Dfile=[FILE_PATH] \
-DgroupId=[GROUP] -DartifactId=[ARTIFACT] -Dversion=[VERS] \
-Dpackaging=jar -DlocalRepositoryPath=[REPO_DIR]
最后,将以下存储库和依赖项定义添加到项目pom.xml:
<repositories>
<repository>
<id>project-repo</id>
<url>file://${project.basedir}/src/main/resources/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>[GROUP]</groupId>
<artifactId>[ARTIFACT]</artifactId>
<version>[VERS]</version>
</dependency>
</dependencies>
https://stackoverflow.com/questions/1164043
复制相似问题