在Maven存储库中查找Oracle JDBC驱动程序

rpe*_*rez 282 java maven-2 jdbc maven mvn-repo

我想将oracle jdbc驱动程序添加到我的项目中作为依赖项(运行时作用域) - ojdbc14.在MVNrepository站点中,放入POM的依赖关系是:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.3.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

当然这不起作用,因为它不在maven使用的中央存储库中.2个问题:

  1. 如何找到包含此工件的存储库(如果有)?

  2. 如何添加它以便Maven将使用它?

vic*_*ugo 406

如何找到包含此工件的存储库(如果有)?

不幸的是,由于二进制许可证,Oracle Driver JAR没有公共存储库.这种情况发生在许多依赖项中,但不是Maven的错.如果您碰巧找到包含JAR的公共存储库,您可以确定它是非法的.

如何添加它以便Maven将使用它?

由于许可证原因而无法添加的某些JAR 在Maven Central仓库中有一个pom条目.只需查看它,它包含供应商首选的Maven信息:

<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>
Run Code Online (Sandbox Code Playgroud)

...以及下载文件的URL,在本例中为 http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html.

下载JAR后,只需将其添加到您的计算机存储库中(注意我从POM中提取了groupId,artifactId和版本):

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 \
     -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=ojdbc.jar -DgeneratePom=true
Run Code Online (Sandbox Code Playgroud)

生成POM的最后一个参数将使您免于pom.xml警告

如果您的团队有一个本地Maven存储库,那么本指南可能有助于在那里上传JAR.

  • @AmanicA,在同一句话中很难使用"Oracle"和"nice"...... (143认同)
  • 如果甲骨文可以用他们的罐子主持一个maven回购,那将是很好的... (111认同)
  • 对于OJDBC6:1.mvn install:install-file -DgroupId = com.oracle -DartifactId = ojdbc6 -Dversion = 11.2.0.3 -Dpackaging = jar -Dfile = ojdbc6.jar -DgeneratePom = true 2.将其添加到pom.xml: <dependency> <groupId> com.oracle </ groupId> <artifactId> ojdbc6 </ artifactId> <version> 11.2.0.3 </ version> </ dependency> (15认同)
  • 我徘徊为什么甲骨文如此丑陋以至于它并不关心它所有的公共判断.即使在像他们自己的免费图书馆的公共可用性这些小事情上也很糟糕. (10认同)
  • @AmanicA根据/sf/answers/1956036631/,Oracle现在托管了这样一个存储库 (6认同)

Mar*_*rvo 51

无论出于何种原因,我无法获得上述任何解决方案.(仍然不能.)

我所做的是将jar包含在我的项目中(blech),然后为它创建一个"系统"依赖项,指示jar的路径.它可能不是正确的方法,但它确实有效.并且它消除了团队中的其他开发人员(或设置构建服务器的人)将jar放入其本地存储库的需要.

更新:当我运行Hibernate Tools时,此解决方案适用于我.但是,它似乎不适用于构建WAR文件.它不包含目标WAR文件中的ojdbc6.jar文件.

1)在项目的根目录中创建一个名为"lib"的目录.

2)复制ojdbc6.jar文件(无论调用jar.)

3)创建一个看起来像这样的依赖:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc</artifactId>
    <version>14</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/ojdbc6.jar</systemPath> <!-- must match file name -->
</dependency>
Run Code Online (Sandbox Code Playgroud)

丑陋,但对我有用.

要将文件包含在war文件中,请将以下内容添加到您的pom中

<build>
    <finalName>MyAppName</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webResources>
                    <resource>
                        <directory>${basedir}/src/main/java</directory>
                        <targetPath>WEB-INF/classes</targetPath>
                        <includes>
                            <include>**/*.properties</include>
                            <include>**/*.xml</include>
                            <include>**/*.css</include>
                            <include>**/*.html</include>
                        </includes>
                    </resource>
                    <resource>
                        <directory>${basedir}/lib</directory>
                        <targetPath>WEB-INF/lib</targetPath>
                        <includes>
                            <include>**/*.jar</include>
                        </includes>
                    </resource>
                </webResources>
            </configuration>
        </plugin>

        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

  • 我实际上喜欢这个解决方案,因为它不需要设置nexus,在项目中通常只有1或2个这样的jar,它简化了项目上的其他开发人员设置,因为他们不必更新他们的本地.m2 env .(甲骨文是这个的主要候选人).此外,如果您使用新的oracle jar更新源代码库,则所有开发人员都会在下一次启动时获取它. (8认同)

小智 30

下载jar并将其放入项目中src/lib.现在您可以使用maven安装程序插件.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.3.1</version>
    <executions>
        <execution>
            <id>install-oracle-jdbc</id>
            <goals>
                <goal>install-file</goal>
            </goals>
            <phase>clean</phase>
            <configuration>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>11.2.0</version>
                <packaging>jar</packaging>
                <generatePom>true</generatePom>
                <createChecksum>true</createChecksum>
                <file>${project.basedir}/src/lib/ojdbc6.jar</file>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

现在您只需要执行mvn clean一次,并在您的本地maven存储库中安装oracle lib.

  • 非常有用的选择! (9认同)

Seb*_*ien 22

Oracle现在在maven.oracle.com上公开了一个maven存储库.但是你需要进行身份验证.

请参阅https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_and_the_oracle

根据博客文章中的评论,ojdbc驱动程序应该在以下坐标处可用:

<groupId>com.oracle.weblogic</groupId>
 <artifactId>ojdbc7</artifactId>
 <version>12.1.3-0-0</version>
 <packaging>jar</packaging>
Run Code Online (Sandbox Code Playgroud)

  • 需要身份验证才能获得maven工件听起来很荒谬. (12认同)
  • 这确实有效.这有点麻烦.您必须确保获得正确的工件,创建Oracle帐户,向settings.xml和pom.xml文件添加一些内容,并将该帐户的用户名和密码添加到settings.xml.Oracle需要修复他们的许可,因为它仍然是PITA. (7认同)
  • 如果由于某种原因必须使用ojdbc6(即你被困在Java 6上),那么将artifactId更改为ojdbc6**并将**更改为12.1.2-0-0. (3认同)
  • *更新*:钉它:老年人JDBC驱动程序,还必须更改的groupId:MVN org.apache.maven.plugins:Maven的依赖关系的插件:2.1:GET -DrepoUrl = HTTPS://maven.oracle.com -Dartifact = com.oracle.jdbc:ojdbc6:11.2.0.4 (2认同)

Bie*_*vid 22

Oracle JDBC驱动程序现在可在Oracle Maven存储库(不在中央)中使用.

<dependency>
    <groupId>com.oracle.jdbc</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

Oracle Maven Repository需要用户注册.说明可在以下位置找到:

https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides


sea*_*g9x 17

试试:

<repositories>
    <!-- Repository for ORACLE ojdbc6. -->
    <repository>
        <id>codelds</id>
        <url>https://code.lds.org/nexus/content/groups/main-repo</url>
    </repository>
</repositories>
<dependencies> 
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
</dependencies> 
Run Code Online (Sandbox Code Playgroud)

  • 除非这违反了Oracle许可证. (14认同)
  • 除了许可问题,**你不应该在你的pom**中添加未知的存储库.这会带来**安全风险**,也可能威胁到您的构建.你能从_耶稣基督后期圣徒教会的信息库中放多少信任?它们提供了什么保证,存储库是可靠,安全和可靠的,并且它们不会弄乱它?如果他们被黑客攻击并发布恶意版本的ojdbc驱动程序或任何其他依赖项,会发生什么? (4认同)
  • 暴力执照,但有效.我将它用于教育目的(不是在制作中).它还包含12c驱动程序<dependency> <groupId> com.oracle </ groupId> <artifactId> ojdbc7 </ artifactId> <version> 12.1.0.2 </ version> </ dependency> (3认同)

tar*_*ini 14

1.如何找到包含此工件的存储库(如果有)?

所有Oracle数据库JDBC驱动程序均根据OTN许可协议进行分发.

如果您阅读OTN许可协议,您会发现此许可条款:

您可能不会:
......
- 除非附有您的申请,否则分发程序;
...

这就是为什么你不能在任何公共Maven资源库中找到驱动程序的jar,因为它将单独分发,如果它发生了,那将是一个许可证违规.

添加依赖项:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.3.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

(或任何更高版本)使Maven下载ojdbc14-10.2.0.3.0.pom唯一,在那个pom中你可以阅读:

...
<licenses>
    <license>
        <name>Oracle Technology Network Development and Distribution License Terms</name>
        <url>http://www.oracle.com/technology/software/htdocs/distlic.html</url>
    </license>
</licenses>
...
Run Code Online (Sandbox Code Playgroud)

通知您有关OTN许可证的信息.

2.如何添加它以便Maven使用它?

为了使上述作品依赖我同意雨果谁是建议你在这里手动罐安装到你的本地仓库(在.m2运行目录):

mvn install:install-file -Dfile={Path_to_your_ojdbc.jar} -DgroupId=com.oracle 
-DartifactId=ojdbc -Dversion=10.2.0.3.0 -Dpackaging=jar
Run Code Online (Sandbox Code Playgroud)

但我想补充一点,上面的许可条款并不仅限于无法找到JDBC jar的地方,但它也限制了你安装它的地方!

实际上,您的本地Maven存储库必须是私有的而不是共享的,因为如果它是共享的,那么它将是一种独立分发jar的分发,即使是一小群人进入您的局域网,这代表了OTN许可协议违规.

此外,我认为您应该避免在公司存储库管理器(例如ArtifactoryNexus)中将JDBC jar作为单个工件安装,因为如果它已经安装,它仍将单独分发,即使只对您组织中的人员进行分发,这代表一个OTN许可协议违反.


Mic*_*sey 13

您可以使用Nexus管理第三方依赖项以及标准maven存储库中的依赖项.

  • 在这种情况下,nexus如何提供帮助?它将从哪里下载工件? (4认同)
  • 答案是不完整的,但我认为*@Michael Munsey说要创建一个内部/企业存储库来下载. (4认同)

Ant*_*oly 11

截至今天(2020 年 2 月 27 日),Oracle宣布已在 Maven Central 上以组 ID com.oracle.database发布了从版本 11.2.0.4(例如 ojdbc6)到 19.3.0(例如 ojdbc10)的所有 JDBC 客户端库:

例子:

<dependency>
  <groupId>com.oracle.database.jdbc</groupId>
  <artifactId>ojdbc10</artifactId>
  <version>19.3.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)


tug*_*cem 6

到目前为止,它不可能使用maven存储库.我使用常春藤作为依赖管理工具,但也使用maven2的ibiblio存储库.这适用于常春藤:

<dependency org="oracle" name="ojdbc14" rev="10.2.0.2" conf="*->default"/>
Run Code Online (Sandbox Code Playgroud)

Maven2的依赖可能是这样的:

<dependency> 
    <groupId>oracle</groupId> 
    <artifactId>ojdbc14</artifactId> 
    <version>10.2.0.2</version> 
</dependency>
Run Code Online (Sandbox Code Playgroud)

请注意,我定义http://download.java.net/maven/2/http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/ [organization]/[module]/[修订]/[工件] - [修订].[ext]作为我的常春藤设置上的外部maven2 repos.

  • 它可能有用,但它合法吗?正如在此处的其他答案中所解释的那样,Oracle不允许除了它们之外的任何人分发驱动程序,并且它们不提供Maven存储库.如果您使用此解决方案,有时可能会在您最不期望的时候从存储库中删除驱动程序. (7认同)

Alb*_*boz 5

Oracle JDBC 驱动程序现在Maven Central 中可用。链接在这里:

Oracle JDBC 驱动程序 - Maven 中心

Oracle 开发人员文章宣布在 Maven Central 中提供 Oracle JDBC 驱动程序:

Oracle 宣布 - Maven Central 中提供 Oracle JDBC 驱动程序

例子:

<!-- https://mvnrepository.com/artifact/com.oracle.jdbc/ojdbc10 -->
<dependency>
   <groupId>com.oracle.database.jdbc</groupId>
   <artifactId>ojdbc10</artifactId>
   <version>19.3.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)