sbt从受密码保护的存储库下载工件-oracle jdbc驱动程序作为托管依赖项

sbt从受密码保护的存储库下载工件-oracle jdbc驱动程序作为托管依赖项,oracle,maven,sbt,Oracle,Maven,Sbt,我想通过SBT下载oracle数据库驱动程序。如本文所述,它们受密码保护。在SBT手册()中提到,可以为解析器指定凭据。在应用时,如: resolvers += "oracle" at "https://maven.oracle.com" credentials += Credentials("oracle download", "maven.oracle.com", "myEmail@gmail.com", "password") libraryDependencies ++= Seq(

我想通过SBT下载oracle数据库驱动程序。如本文所述,它们受密码保护。在SBT手册()中提到,可以为解析器指定凭据。在应用时,如:

resolvers += "oracle" at "https://maven.oracle.com"
credentials += Credentials("oracle download", "maven.oracle.com", "myEmail@gmail.com", "password")

libraryDependencies ++= Seq(
  "com.oracle.jdbc" % "ojdbc8" % "12.2.0.1"
)
我仍然有一个

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.oracle.jdbc#ojdbc8;12.2.0.1: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
配置中缺少什么

编辑 将凭据更改为时

credentials += Credentials("maven.oracle.com", "maven.oracle.com", "E-Mail", "password")
结果是

[error] Unable to find credentials for [OAM 11g @ login.oracle.com].
[warn]  module not found: com.oracle.jdbc#ojdbc8;11.2.0.4
[warn] ==== local: tried
[warn]   /Users/geoheil/.ivy2/local/com.oracle.jdbc/ojdbc8/11.2.0.4/ivys/ivy.xml
[warn] ==== oracle: tried
[warn]   https://maven.oracle.com/com/oracle/jdbc/ojdbc8/11.2.0.4/ojdbc8-11.2.0.4.pom
[info] Resolving org.apache#apache;14 ...
[error] Unable to find credentials for [OAM 11g @ login.oracle.com].
[info] Resolving jline#jline;2.12.1 ...
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.oracle.jdbc#ojdbc8;11.2.0.4: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
如何找到正确的oracle领域

Unable to find credentials for [OAM 11g @ login.oracle.com]
这表明OAM 11g是一个领域,但这仍然会导致同样的问题。此外,建议的
OAM 11g
也不起作用

对于gradle来说,似乎有一个解决办法:

但到目前为止,我还没有任何选择(通过SSO的正确领域,解决方案)来使用SBT

编辑2 迄今为止最好的解决办法是

编辑3 在此处找到一个可复制的示例:

1)我在上签出您的项目

2)我运行此命令查找Maven安装的路径:

mvn -version
3)我使用您的设置编辑..\apache-maven-3.5.0\conf\settings.xml文件

4)我运行以下命令:

mvn clean install
mvn clean install --settings settings.xml
5)我也有同样的错误

6)我在

7)我使用有效的登录名/密码编辑..\apache-maven-3.5.0\conf\settings.xml文件

8)我运行了这个命令,并且获得了Maven构建成功

mvn clean install
您需要有效的Oracle帐户来解决问题。

注:

如果使用travic ci,请运行以下命令:

mvn clean install
mvn clean install --settings settings.xml
在settings.xml文件中:

<server>
  <id>maven.oracle.com</id>
  <username>${OTN_USERNAME}</username>
  <password>${OTN_PASSWORD}</password>
  <configuration>
    <basicAuthScope>
      <host>ANY</host>
      <port>ANY</port>
      <realm>OAM 11g</realm>
    </basicAuthScope>
    <httpConfiguration>
      <all>
        <params>
          <property>
            <name>http.protocol.allow-circular-redirects</name>
            <value>%b,true</value>
          </property>
        </params>
      </all>
    </httpConfiguration>
  </configuration>
</server> 

maven.oracle.com
${OTN_USERNAME}
${OTN_密码}
任何
任何
OAM 11g
):


它是有效的。

依赖外部的、公共的、Maven存储库(您的第二次编辑)存在一个问题,即它们公开提供Oracle JDBC驱动程序违反了许可证,并且可能需要随时通过删除通知将其删除。我们使用私有的Nexus回购来解决这个问题,我们使用它来处理我们自己和其他人的受许可证限制的工件。这是一种提供Oracle JDBC驱动程序的完全合法的方式。你是说edit2?是的,但我指的是
mvn安装:安装文件-DgroupId=com.oracle-DartifactId=ojdbc14 \-Dversion=10.2.0.3.0-dpackage=jar-Dfile=ojdbc.jar-DgeneratePom=true
,它不会违反许可证。不过,我还是希望SBT可以直接从oracle获取JAR。不幸的是,我认为您看到的错误非常明显,而且SBT不是您的朋友-具体来说,身份验证主机是
login.oracle.com
,而您的下载解析程序是
maven.oracle.com
。当我将凭据更改为
credentials+=credentials(“OAM 11g”、“login.oracle.com”、“E-Mail”、“password”)
时,我知道不再会收到无效的登录错误,但工件仍然未解决。
credentials+=credentials(“WebLogic Server”、“login.oracle.com”、“email”、“password”)
将导致未找到
模块:com.oracle.jdbc#ojdbc8;11.2.0.4
,因此不再出现无法登录错误…不幸的是,我使用新创建的帐户再次面临问题。以前在
settings.xml
文件中提供的虚拟帐户实际上允许我登录到oracle网站-因此应该没问题。此外,我始终可以看到哪个帐户会将我重定向到a)登录,然后b)重新接受许可证。这里有一个示例项目:当运行正常时,oracle会解决他们的帐户(登录/密码)问题: