Dspace 6.3 Solr Webapp 构建错误 org.restlet.jee - 镜像被阻止
Dspace 6.3 Solr Webapp build error org.restlet.jee - blocked mirror
我已经在 Docker 中成功构建 DSpace 6.3 大约 4 个月了。今天我遇到了一个构建错误,谷歌搜索似乎无济于事。
#9 43.60 [INFO] ------------------------------------------------------------------------
#9 43.60 [INFO] Reactor Summary for DSpace Assembly and Configuration 6.3:
#9 43.60 [INFO]
#9 43.60 [INFO] DSpace Addon Modules ............................... SUCCESS [ 0.673 s]
#9 43.60 [INFO] UTS Library DSpace copyright ....................... SUCCESS [ 3.754 s]
#9 43.60 [INFO] DSpace Kernel :: Additions and Local Customizations SUCCESS [ 1.287 s]
#9 43.60 [INFO] UTS Library DSpace taglib .......................... SUCCESS [ 0.239 s]
#9 43.60 [INFO] DSpace JSP-UI :: Local Customizations .............. SUCCESS [ 10.128 s]
#9 43.61 [INFO] DSpace REST :: Local Customizations ................ SUCCESS [ 7.058 s]
#9 43.61 [INFO] DSpace SWORD v2 :: Local Customizations ............ SUCCESS [ 17.577 s]
#9 43.61 [INFO] Apache Solr Webapp ................................. FAILURE [ 0.214 s]
#9 43.61 [INFO] DSpace OAI-PMH :: Local Customizations ............. SKIPPED
#9 43.61 [INFO] DSpace Assembly and Configuration .................. SKIPPED
#9 43.61 [INFO] ------------------------------------------------------------------------
#9 43.61 [INFO] BUILD FAILURE
#9 43.61 [INFO] ------------------------------------------------------------------------
#9 43.61 [INFO] Total time: 41.269 s
#9 43.61 [INFO] Finished at: 2021-04-06T02:47:50Z
#9 43.61 [INFO] ------------------------------------------------------------------------
#9 43.61 [ERROR] Failed to execute goal on project dspace-solr: Could not resolve dependencies for
project org.dspace:dspace-solr:war:6.3: Failed to collect dependencies at org.apache.solr:solr-
core:jar:4.10.4 -> org.restlet.jee:org.restlet:jar:2.1.1: Failed to read artifact descriptor for
org.restlet.jee:org.restlet:jar:2.1.1: Could not transfer artifact org.restlet.jee:org.restlet:pom:2.1.1
from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [maven-snapshots
(http://oss.sonatype.org/content/repositories/snapshots, default, snapshots), maven-restlet
(http://maven.restlet.org, default, releases+snapshots), apache.snapshots
(http://repository.apache.org/snapshots, default, disabled)] -> [Help 1]
#9 43.61 [ERROR]
如错误消息所述,org.restlet.jee
是 org.apache.solr.core-services
solr-core-4.10.4.jar
的依赖项,并列在该 jar 的 pom
文件中。据我所知,这似乎是 pom 文件的 maven 级联中对它的唯一引用。
我以前没有遇到过这个“存储库镜像被阻止”错误,google“maven“存储库镜像被阻止””尤其没有帮助。据推测,注册此依赖项的存储库以某种方式将自己列入黑名单。
我尝试手动将依赖项添加到 DSpace Solr pom.xml
文件,但这不起作用。有谁知道解决方法,还是需要向 Apache Solr 团队提出修复请求?
所以,我花了一整天的时间,尝试了很多东西,但我解决了。
我最初试图在错误的 pom.xml
文件中强制依赖。我可以构建它的唯一方法是:
在您的自定义项目中创建一个新的 Solr 本地自定义模块并添加一个 pom.xml
文件。如果您没有自定义项目并且正在使用普通的 DSpace,我想您必须创建一个。对我来说,新的自定义模块位于 ${customisations.project.root}/src/dspace/modules/solr
,POM 文件为:
<modelVersion>4.0.0</modelVersion>
<groupId>org.dspace.modules</groupId>
<artifactId>solr</artifactId>
<packaging>war</packaging>
<name>DSpace Solr :: Local Customizations</name>
<description>
This project allows you to overlay your own local Solr customizations
on top of the default Solr web application provided with DSpace.
</description>
<parent>
<groupId>org.dspace</groupId>
<artifactId>modules</artifactId>
<version>6.3</version>
<relativePath>..</relativePath>
</parent>
<properties>
<!-- This is the path to the root [dspace-src] directory. -->
<root.basedir>${basedir}/../../..</root.basedir>
<dspace.maven.local>/dspace-src/dspace/maven-local</dspace.maven.local>
</properties>
<dependencies>
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet</artifactId>
<version>2.1.1</version>
<scope>system</scope>
<systemPath>${dspace.maven.local}/org/restlet/jee/org.restlet/2.1.1/org.restlet-2.1.1.jar</systemPath>
</dependency>
</dependencies>
(注意 - 我无法让 Whosebug 显示上面代码中的根 project
元素 - 可能是因为其中声明了 XML 命名空间)
- 将
org.restlet.jee
包从本地 Maven 存储库复制到 DSpace 自定义项目中的目录中。在上面的代码中,您可以看到我的位于 ${dspace.maven.local}/org/restlet/jee/org.restlet/2.1.1/org.restlet-2.1.1.jar
并且我声明了 `${dspace.maven.local} 变量以指向我为此目的创建的目录。
您不能简单地使用 Maven 存储库中的声明 - https://mvnrepository.com/artifact/org.restlet.jee/org.restlet/2.1.1 - 因为该存储库中不存在该文件,这可能一直是问题所在,谁知道呢?
您不能在目录结构较高的 pom.xml
文件中声明依赖项 - 不起作用。您不能在 Dockerfile 中使用 maven install:install-file
安装 - 不起作用。
希望这对遇到同样问题的人有所帮助。
这可能是一个临时问题,如果旧的 Restlet 存储库暂时 down/unavailable。
但是,另一种可能的解决方法是将其临时添加到 <repositories>
标记中的主 POM [src]/pom.xml
:
<repository>
<id>maven-restlet</id>
<name>Public online Restlet repository</name>
<url>https://maven.restlet.com</url>
</repository>
我们 运行 不久前在 DSpace 7 工作时(见 https://github.com/DSpace/DSpace/pull/2642), but it turned out to only be needed temporarily as the issue was that the older http://maven.restlet.org URL 暂时没有反应。
上周发布的 Maven 版本 3.81 不再接受 http:// 存储库,仅接受 https:// - https://www.reddit.com/r/java/comments/mk462r/apache_maven_version_381_released/ .
报错部分:
Could not transfer artifact org.restlet.jee:org.restlet:pom:2.1.1
from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories
表示 0.0.0.0(即所有 IP)都被 http 屏蔽了。该消息有点神秘。你会认为程序员可以提供一些更有帮助的东西。
我们用来构建的 Docker 映像是 maven:3-jdk-8
,几天前已更新到 Maven 3.81。因此,一旦 Docker 更新了它的图像,我们就无法再访问 http:// 存储库。我们将 Maven Docker 映像更改为以前的版本 - 3.6-jdk-8
- DSpace 6.3 构建良好。
毫无疑问,有一种方法可以覆盖 Maven 3.81 中的默认行为,但我们现在可以使用旧版本。
在 \apache-maven-3.8.1\conf\settings.xml
中,有必要定义 Maven 从何处进行镜像。这就是我的问题。
< mirrorOf> external:*http < mirrorOf>
解决方法:
< mirrorOf> external:http://yourlocalhost:8080 < mirrorOf>
我已经在 Docker 中成功构建 DSpace 6.3 大约 4 个月了。今天我遇到了一个构建错误,谷歌搜索似乎无济于事。
#9 43.60 [INFO] ------------------------------------------------------------------------
#9 43.60 [INFO] Reactor Summary for DSpace Assembly and Configuration 6.3:
#9 43.60 [INFO]
#9 43.60 [INFO] DSpace Addon Modules ............................... SUCCESS [ 0.673 s]
#9 43.60 [INFO] UTS Library DSpace copyright ....................... SUCCESS [ 3.754 s]
#9 43.60 [INFO] DSpace Kernel :: Additions and Local Customizations SUCCESS [ 1.287 s]
#9 43.60 [INFO] UTS Library DSpace taglib .......................... SUCCESS [ 0.239 s]
#9 43.60 [INFO] DSpace JSP-UI :: Local Customizations .............. SUCCESS [ 10.128 s]
#9 43.61 [INFO] DSpace REST :: Local Customizations ................ SUCCESS [ 7.058 s]
#9 43.61 [INFO] DSpace SWORD v2 :: Local Customizations ............ SUCCESS [ 17.577 s]
#9 43.61 [INFO] Apache Solr Webapp ................................. FAILURE [ 0.214 s]
#9 43.61 [INFO] DSpace OAI-PMH :: Local Customizations ............. SKIPPED
#9 43.61 [INFO] DSpace Assembly and Configuration .................. SKIPPED
#9 43.61 [INFO] ------------------------------------------------------------------------
#9 43.61 [INFO] BUILD FAILURE
#9 43.61 [INFO] ------------------------------------------------------------------------
#9 43.61 [INFO] Total time: 41.269 s
#9 43.61 [INFO] Finished at: 2021-04-06T02:47:50Z
#9 43.61 [INFO] ------------------------------------------------------------------------
#9 43.61 [ERROR] Failed to execute goal on project dspace-solr: Could not resolve dependencies for
project org.dspace:dspace-solr:war:6.3: Failed to collect dependencies at org.apache.solr:solr-
core:jar:4.10.4 -> org.restlet.jee:org.restlet:jar:2.1.1: Failed to read artifact descriptor for
org.restlet.jee:org.restlet:jar:2.1.1: Could not transfer artifact org.restlet.jee:org.restlet:pom:2.1.1
from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [maven-snapshots
(http://oss.sonatype.org/content/repositories/snapshots, default, snapshots), maven-restlet
(http://maven.restlet.org, default, releases+snapshots), apache.snapshots
(http://repository.apache.org/snapshots, default, disabled)] -> [Help 1]
#9 43.61 [ERROR]
如错误消息所述,org.restlet.jee
是 org.apache.solr.core-services
solr-core-4.10.4.jar
的依赖项,并列在该 jar 的 pom
文件中。据我所知,这似乎是 pom 文件的 maven 级联中对它的唯一引用。
我以前没有遇到过这个“存储库镜像被阻止”错误,google“maven“存储库镜像被阻止””尤其没有帮助。据推测,注册此依赖项的存储库以某种方式将自己列入黑名单。
我尝试手动将依赖项添加到 DSpace Solr pom.xml
文件,但这不起作用。有谁知道解决方法,还是需要向 Apache Solr 团队提出修复请求?
所以,我花了一整天的时间,尝试了很多东西,但我解决了。
我最初试图在错误的 pom.xml
文件中强制依赖。我可以构建它的唯一方法是:
在您的自定义项目中创建一个新的 Solr 本地自定义模块并添加一个
pom.xml
文件。如果您没有自定义项目并且正在使用普通的 DSpace,我想您必须创建一个。对我来说,新的自定义模块位于${customisations.project.root}/src/dspace/modules/solr
,POM 文件为:<modelVersion>4.0.0</modelVersion> <groupId>org.dspace.modules</groupId> <artifactId>solr</artifactId> <packaging>war</packaging> <name>DSpace Solr :: Local Customizations</name> <description> This project allows you to overlay your own local Solr customizations on top of the default Solr web application provided with DSpace. </description> <parent> <groupId>org.dspace</groupId> <artifactId>modules</artifactId> <version>6.3</version> <relativePath>..</relativePath> </parent> <properties> <!-- This is the path to the root [dspace-src] directory. --> <root.basedir>${basedir}/../../..</root.basedir> <dspace.maven.local>/dspace-src/dspace/maven-local</dspace.maven.local> </properties> <dependencies> <dependency> <groupId>org.restlet.jee</groupId> <artifactId>org.restlet</artifactId> <version>2.1.1</version> <scope>system</scope> <systemPath>${dspace.maven.local}/org/restlet/jee/org.restlet/2.1.1/org.restlet-2.1.1.jar</systemPath> </dependency> </dependencies>
(注意 - 我无法让 Whosebug 显示上面代码中的根 project
元素 - 可能是因为其中声明了 XML 命名空间)
- 将
org.restlet.jee
包从本地 Maven 存储库复制到 DSpace 自定义项目中的目录中。在上面的代码中,您可以看到我的位于${dspace.maven.local}/org/restlet/jee/org.restlet/2.1.1/org.restlet-2.1.1.jar
并且我声明了 `${dspace.maven.local} 变量以指向我为此目的创建的目录。
您不能简单地使用 Maven 存储库中的声明 - https://mvnrepository.com/artifact/org.restlet.jee/org.restlet/2.1.1 - 因为该存储库中不存在该文件,这可能一直是问题所在,谁知道呢?
您不能在目录结构较高的 pom.xml
文件中声明依赖项 - 不起作用。您不能在 Dockerfile 中使用 maven install:install-file
安装 - 不起作用。
希望这对遇到同样问题的人有所帮助。
这可能是一个临时问题,如果旧的 Restlet 存储库暂时 down/unavailable。
但是,另一种可能的解决方法是将其临时添加到 <repositories>
标记中的主 POM [src]/pom.xml
:
<repository>
<id>maven-restlet</id>
<name>Public online Restlet repository</name>
<url>https://maven.restlet.com</url>
</repository>
我们 运行 不久前在 DSpace 7 工作时(见 https://github.com/DSpace/DSpace/pull/2642), but it turned out to only be needed temporarily as the issue was that the older http://maven.restlet.org URL 暂时没有反应。
上周发布的 Maven 版本 3.81 不再接受 http:// 存储库,仅接受 https:// - https://www.reddit.com/r/java/comments/mk462r/apache_maven_version_381_released/ .
报错部分:
Could not transfer artifact org.restlet.jee:org.restlet:pom:2.1.1
from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories
表示 0.0.0.0(即所有 IP)都被 http 屏蔽了。该消息有点神秘。你会认为程序员可以提供一些更有帮助的东西。
我们用来构建的 Docker 映像是 maven:3-jdk-8
,几天前已更新到 Maven 3.81。因此,一旦 Docker 更新了它的图像,我们就无法再访问 http:// 存储库。我们将 Maven Docker 映像更改为以前的版本 - 3.6-jdk-8
- DSpace 6.3 构建良好。
毫无疑问,有一种方法可以覆盖 Maven 3.81 中的默认行为,但我们现在可以使用旧版本。
在 \apache-maven-3.8.1\conf\settings.xml
中,有必要定义 Maven 从何处进行镜像。这就是我的问题。
< mirrorOf> external:*http < mirrorOf>
解决方法:
< mirrorOf> external:http://yourlocalhost:8080 < mirrorOf>