为什么我的 play 框架构建有时会获取 oss-parent 依赖项?
Why is my play framework build sometimes fetching oss-parent dependency?
我有一台自动构建 play framework 2.3.4 项目的服务器,可以成功构建我的开发分支。但是,当我在同一台服务器上使用相同的脚本构建不同的分支时,我遇到了一些奇怪的行为。
构建出于某种原因获取名为 [actual dependency]-parent
的依赖项,这不会发生在其他分支上,也不会发生在我在本地计算机上构建有问题的分支时。
例如:
在我的本地:
[info] Resolving org.elasticsearch#elasticsearch;1.4.0 ...
[info] Resolving org.apache.lucene#lucene-core;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-analyzers-common;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-queries;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-memory;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-highlighter;4.10.2 ...
...
在 CI 构建:
[info] Resolving org.elasticsearch#elasticsearch;1.4.0 ...
[info] Resolving org.sonatype.oss#oss-parent;7 ...
[info] Resolving org.apache.lucene#lucene-core;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-parent;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-solr-grandparent;4.10.2 ...
[info] Resolving org.apache#apache;13 ...
[info] Resolving org.apache.lucene#lucene-analyzers-common;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-parent;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-queries;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-parent;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-memory;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-parent;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-highlighter;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-parent;4.10.2 ...
...
依赖项 org.sonatype.oss#oss-parent;7
是全新的,在工作构建中没有 org.sonatype.oss
依赖项。
随后是无法启动虚假应用程序后测试失败,我认为这是因为依赖关系不好。
有人知道是什么原因造成的吗?
我的 build.sbt 中的解析器如下所示:
resolvers := Seq(
"Sonatype repo" at "https://oss.sonatype.org/content/repositories/releases/",
"Sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/",
"Maven central repo" at "https://oss.sonatype.org/content/repositories/central/",
"Maven central repo2" at "https://repo1.maven.org/maven2/",
"Typesafe Repository" at "https://repo.typesafe.com/typesafe/releases/",
Resolver.url("Objectify Play Repository", url("http://schaloner.github.io/releases/"))(Resolver.ivyStylePatterns),
Resolver.url("Objectify Play Snapshot Repository", url("http://schaloner.github.io/snapshots/"))(Resolver.ivyStylePatterns),
Resolver.url("Edulify Repository", url("http://edulify.github.io/modules/releases/"))(Resolver.ivyStylePatterns),
Resolver.file("Local Repository", file(sys.env.get("PLAY_HOME").map(_ + "/repository/local").getOrElse("")))(Resolver.ivyStylePatterns),
Resolver.mavenLocal
)
今天早上,2015 年 2 月 6 日,两个分支合并,所以没有区别。然而,一个分支仍在构建,但另一个分支失败(在同一个弹性实例上)。每个构建都有自己的激活器实例,并且不共享存储库文件夹,但是两个存储库文件夹是相同的。
根本原因可能是不久前 oss.sonatype.org 存储库从 http 移动到 https,因此 sbt 试图通过 https 获取该依赖项,获取 301 重定向并对其进行轰炸。我怀疑你在本地看不到这个的原因可能是你有一个缓存版本?
我认为以下两种方法之一可以帮助您克服它:
如果您有权访问 CI 服务器的 maven 存储库,请尝试从本地 maven 存储库复制正确的依赖项(在删除当前缓存版本后,如果有的话)。这通常位于任何用户的主目录中 运行 CI 服务器或构建过程,在 ~/.m2/repository/org/sonatype/oss/oss-parent/7
我建议删除整个目录(如果有的话)并从本地已知的良好副本中复制整个目录。
如果这不起作用或不可能,您可以考虑添加 sonatype 存储库的正确 https URL,在 sbt 中它看起来像:
resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
在你的Build.scala...的适当部分,但你可能仍然需要删除任何损坏的缓存版本的目录,如果它存在并且在构建中持续存在。
我有一台自动构建 play framework 2.3.4 项目的服务器,可以成功构建我的开发分支。但是,当我在同一台服务器上使用相同的脚本构建不同的分支时,我遇到了一些奇怪的行为。
构建出于某种原因获取名为 [actual dependency]-parent
的依赖项,这不会发生在其他分支上,也不会发生在我在本地计算机上构建有问题的分支时。
例如:
在我的本地:
[info] Resolving org.elasticsearch#elasticsearch;1.4.0 ...
[info] Resolving org.apache.lucene#lucene-core;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-analyzers-common;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-queries;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-memory;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-highlighter;4.10.2 ...
...
在 CI 构建:
[info] Resolving org.elasticsearch#elasticsearch;1.4.0 ...
[info] Resolving org.sonatype.oss#oss-parent;7 ...
[info] Resolving org.apache.lucene#lucene-core;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-parent;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-solr-grandparent;4.10.2 ...
[info] Resolving org.apache#apache;13 ...
[info] Resolving org.apache.lucene#lucene-analyzers-common;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-parent;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-queries;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-parent;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-memory;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-parent;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-highlighter;4.10.2 ...
[info] Resolving org.apache.lucene#lucene-parent;4.10.2 ...
...
依赖项 org.sonatype.oss#oss-parent;7
是全新的,在工作构建中没有 org.sonatype.oss
依赖项。
随后是无法启动虚假应用程序后测试失败,我认为这是因为依赖关系不好。
有人知道是什么原因造成的吗?
我的 build.sbt 中的解析器如下所示:
resolvers := Seq(
"Sonatype repo" at "https://oss.sonatype.org/content/repositories/releases/",
"Sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/",
"Maven central repo" at "https://oss.sonatype.org/content/repositories/central/",
"Maven central repo2" at "https://repo1.maven.org/maven2/",
"Typesafe Repository" at "https://repo.typesafe.com/typesafe/releases/",
Resolver.url("Objectify Play Repository", url("http://schaloner.github.io/releases/"))(Resolver.ivyStylePatterns),
Resolver.url("Objectify Play Snapshot Repository", url("http://schaloner.github.io/snapshots/"))(Resolver.ivyStylePatterns),
Resolver.url("Edulify Repository", url("http://edulify.github.io/modules/releases/"))(Resolver.ivyStylePatterns),
Resolver.file("Local Repository", file(sys.env.get("PLAY_HOME").map(_ + "/repository/local").getOrElse("")))(Resolver.ivyStylePatterns),
Resolver.mavenLocal
)
今天早上,2015 年 2 月 6 日,两个分支合并,所以没有区别。然而,一个分支仍在构建,但另一个分支失败(在同一个弹性实例上)。每个构建都有自己的激活器实例,并且不共享存储库文件夹,但是两个存储库文件夹是相同的。
根本原因可能是不久前 oss.sonatype.org 存储库从 http 移动到 https,因此 sbt 试图通过 https 获取该依赖项,获取 301 重定向并对其进行轰炸。我怀疑你在本地看不到这个的原因可能是你有一个缓存版本?
我认为以下两种方法之一可以帮助您克服它:
如果您有权访问 CI 服务器的 maven 存储库,请尝试从本地 maven 存储库复制正确的依赖项(在删除当前缓存版本后,如果有的话)。这通常位于任何用户的主目录中 运行 CI 服务器或构建过程,在 ~/.m2/repository/org/sonatype/oss/oss-parent/7
我建议删除整个目录(如果有的话)并从本地已知的良好副本中复制整个目录。
如果这不起作用或不可能,您可以考虑添加 sonatype 存储库的正确 https URL,在 sbt 中它看起来像:
resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
在你的Build.scala...的适当部分,但你可能仍然需要删除任何损坏的缓存版本的目录,如果它存在并且在构建中持续存在。