Maven:如何将代表中不可用的 jar 包含在 J2EE 项目中?

2022-08-31 10:07:23

在我的 J2EE 项目中,我有几个依赖项,这些依赖项在任何 Maven 存储库中都不可用,因为它们是专有库。这些库需要在运行时可用,因此必须将其复制到target/.../WEB-INF/lib ...

现在,我将它们列为POM中的系统依赖项,但是使用此方法的问题是,在编译期间不会将其复制到目标构建中。而且这种方法也不是很优雅。

那么,将它们集成到 Maven 中的最佳方式是什么呢?

注意:我不想创建自己的 Maven 存储库。


答案 1

对于想要快速解决此问题的人:

<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 和工件名称,并指向它在文件系统中的位置即可。你很高兴去。

当然,这是一个肮脏的快速修复程序,只有在您不更改库的路径时才能在您的计算机上工作。但有时,这就是你想要的,运行并做一些测试。

编辑:只是重新刷新问题,并意识到用户已经在使用我的解决方案作为临时修复。我会留下我的答案,作为对其他提出这个问题的人的快速帮助。如果有人不同意这一点,请给我留言。:)


答案 2

正如你所说,你不想建立自己的存储库,也许这会有所帮助。

您可以使用 maven-install-plugin 的安装文件目标将文件安装到本地存储库。如果您为每个文件创建一个具有 Maven 调用的脚本,并将其与 jar 一起保存,则您(以及具有访问权限的任何其他人)可以轻松地将 jar(以及关联的 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。如果需要,它可以在您的开发盒上运行,并且开销最小。


推荐