Java 如何发布具有非公共依赖项的项目?

Java 如何发布具有非公共依赖项的项目?,java,oracle,maven,ojdbc,Java,Oracle,Maven,Ojdbc,我的项目(ojdbc8.jar)中有Oracle JDBC驱动程序 但现在我想分发我的项目,例如在GitHub 如果有人下载我的项目,他就不会有ojdbc8.jar <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc8</artifactId> <version>12.2.0.1</versio

我的项目(ojdbc8.jar)中有Oracle JDBC驱动程序

但现在我想分发我的项目,例如在GitHub

如果有人下载我的项目,他就不会有ojdbc8.jar

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc8</artifactId>
        <version>12.2.0.1</version>
    </dependency>

所以问题是-如何发布带有一些本地或附加依赖项的项目,这些依赖项不在maven public repo中?

如果有一个包含ojdbc8.jar的公共可用存储库,您可以在pom中定义该存储库


如果没有,您需要了解是否允许在github存储库中发布该jar,或者是否可以找到下载链接。

我在处理来自公司(通常是Microsoft和Apple)的jar时遇到了这个问题,这些公司希望人们使用他们的语言堆栈而不是Java。我不是律师,但您可能希望指导那些想要编译您的代码的人从可公开下载的jar开始,而不是将他们指向您构建的maven工件


如果没有公共存储库,那么您应该描述如何在用户的本地/公司存储库中构建依赖关系。提供下载jar所需的URL,并描述手动步骤(用于构建副本的步骤),以便感兴趣的各方可以遵循。正如您所提到的,maven简化了将JAR部署到存储库中的过程。

在您的
README.md
中添加一个部分,告诉您从何处以及如何获取此第三方LIB。在POM中,将它们设置在提供的范围内。为什么提供
optional
似乎更合适…@JFMeier IMHO
optional
的意思是:项目编译时没有,但结果遗漏了一些规则,而
提供的
的意思是:你无论如何都必须得到它才能使项目编译。@JFMeier来自maven网站:“可选依赖项在不可能的情况下使用(出于任何原因)将项目拆分为子模块。其思想是,某些依赖项仅用于项目中的某些功能,如果不使用该功能,则不需要这些依赖项。“好的,这可能既不是
提供的
(容器为您提供)也不是
可选的
(正如你所说,这也是不对的)。oracle有一个存储库,但你必须注册并登录才能访问它:谢谢,这看起来是最“正确”的方式
mvn install:install-file -Dfile=C:\Oracle\Client\jdbc\lib\ojdbc8.jar -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.2.0.1 -Dpackaging=jar