java - 为 maven 指定类路径

标签 java oracle maven-2 weblogic oracle-adf

这里对 Maven 很陌生,所以让我先解释一下我要做什么:

我们有一些 JAR 文件不会被添加到 repo 中。这是因为它们特定于 Oracle ADF,并且已经放置在我们的应用程序服务器上。任何时候都只有一个版本可用于所有应用程序。但是为了编译,我们需要在类路径上有这些。有很多这样的 JARS,所以如果我们要升级到更新版本的 ADF,我们将不得不进入每个应用程序并重新定义一些非常冗余的依赖项。同样,我的目标是将这些 JAR 添加到类路径中,因为我们将控制其他地方实际使用的版本。

所以基本上,我想在编译时将给定网络目录(开发人员无权修改)中的每个 JAR 添加到 Maven 的类路径中。而且无需将这些 JAR 文件中的任何一个放入存储库中。当然,这些 JAR 不会打包到任何 EAR/WAR 中。

编辑:

我不想将这些添加到公司 repo 的其他原因是:

  1. 这些 JAR 不被其他任何东西使用。它们有很多,不常见且为 Oracle 所独有。
  2. 在任何时候都只会使用一个给定 JAR 的一个版本。永远不会出现应用程序A依赖1.0而应用程序B依赖1.1的情况。应用程序 A 和 B 都将完全依赖于 1.1 或 1.2。
  3. 我们计划维护 100 多个应用程序。这是很多 pom.xml 文件,这意味着任何时候我们升级 Oracle ADF,如果没有正确指定任何依赖项(通过人为错误),我们每次编辑这 100 多个 pom.xml 文件时都必须修复每个错误升级。

最佳答案

我看到三个选项:

  1. 将依赖项放入存储库(可以是 this answer 中描述的文件存储库)并使用范围 provided 声明它们.
  2. 使用脏 system范围技巧(即声明具有系统范围的依赖项并设置文件系统中 jars 的路径。
  3. #2 的小变化:创建一个带有 MANIFEST.MF 引用所有 jar(使用相对路径)的 jar,并使用 system 声明对这个几乎空的 jar 的依赖。范围。

干净的方法是选项 #1,但其他方法也适用于您的情况。选项 #3 似乎最接近您要查找的内容。

更新:澄清选项#3

假设您有一个包含 a.jar 的目录 b.jar 。创建一个 c.jar 带有 Class-Path进入其META-INF/MANIFEST.MF列出其他 jar ,像这样:

Class-Path: ./a.jar ./b.jar 

然后在您的 POM 中声明对 c 的依赖(并且仅在 c 上)带有 system范围,其他 jar 将变得“可见”,而无需在您的 POM 中明确列出它们(当然,您需要在 list 中声明它们,但这可以很容易地编写脚本)。

关于java - 为 maven 指定类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2677574/

相关文章:

java - 从 html 获取链接返回重复链接的方法

sql - 更新给定值的 Oracle XMLType 列内容

java - 有没有办法将 POST 作为 GET 转发?

JavaFX - 将节点添加到父级时的奇怪行为

php 类将值数组插入 oracle DB

java - 如何在 Maven 部署阶段将构建的工件复制到远程 Windows 服务器上的目录?

java - 我如何从公司防火墙后面使用新的 JBoss Maven 存储库?

maven-2 - Maven依赖项解析

java - 分页控制焦点内容节点

c# - 每次后续调用都使 Oracle 包无效