Dspace 6.3 Solr Webapp构建错误org.restlet.jee-镜像被阻止



我已经在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.jeeorg.apache.solr.core-services的依赖项solr-core-4.10.4.jar,并且列在该jar的pom文件中。据我所知,这似乎是pom文件的maven级联中唯一引用它的地方。

我没有遇到过这种";存储库的阻止镜像";错误之前和谷歌的";maven";存储库的阻止镜像"尤其没有帮助。据推测,这个依赖项注册的存储库不知何故已经进入了黑名单。

我尝试手动将依赖项添加到DSpace Solrpom.xml文件中,但这不起作用。有人知道变通方法吗?还是向Apache Solr团队提出修复请求?

上周发布的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://repositories。我们将Maven Docker映像更改为以前的版本3.6-jdk-8,DSpace 6.3构建良好。

毫无疑问,有一种方法可以覆盖Maven 3.81中的默认行为,但我们现在可以使用旧版本。

如果旧的Restlet存储库暂时关闭/不可用,这可能是一个临时问题。

然而,另一种可能的解决方法是将其临时添加到<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),但事实证明,这只是暂时需要的,因为问题是http://maven.restlet.orgURL暂时没有响应。

apache-maven-3.8.1confsettings.xml中,有必要定义maven将从何处镜像。这就是我的问题所在。

<反光镜>外部:*http<反光镜>

解决方案:

<反光镜>外部:http://yourlocalhost:8080<反光镜>

所以,我花了一整天的时间,尝试了几十件事,但都解决了。

我最初试图在错误的pom.xml文件中强制使用依赖项。我唯一能建立它的方法是:

  1. 在自定义项目中创建一个新的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>
    

(注意-我无法让stackoverflow在上面的代码中显示根project元素-可能是因为它有XML命名空间声明(

  1. 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进行安装-不起作用。

希望这能帮助任何遇到同样问题的人。

最新更新