如何在 NetBeans IDE 中更改 Maven 的远程存储库 URL(从 http 到 https)?

How to change maven's Remote Repository URL in the NetBeans IDE (from http to https)?

尝试 运行 NetBeans 项目时,我收到以下错误消息:

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.10:test (default-test) on project MyNetBeansProject: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.10:test failed: Plugin org.apache.maven.plugins:maven-surefire-plugin:2.10 or one of its dependencies could not be resolved: Failed to collect dependencies for org.apache.maven.plugins:maven-surefire-plugin:jar:2.10 (): Failed to read artifact descriptor for org.apache.maven.surefire:surefire-booter:jar:2.10: Could not transfer artifact org.apache.maven.surefire:surefire-booter:pom:2.10 from/to central (http://repo.maven.apache.org/maven2): Failed to transfer file: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-booter/2.10/surefire-booter-2.10.pom. Return code is: 501 , ReasonPhrase:HTTPS Required. -> [Help 1]

错误消息的以下部分是最重要的部分:

Failed to transfer file: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-booter/2.10/surefire-booter-2.10.pom. Return code is: 501 , ReasonPhrase:HTTPS Required.

Services -> Maven Repositories -> Central Repository -> 鼠标右键单击 "Central Repository" 提供以下信息:

可以看出,远程存储库 URL 是“http://repo.maven.apache.org/maven2/". I think it should instead be "https://repo.maven.apache.org/maven2/”。 但是,问题是我似乎无法更改远程存储库 URL。

有人知道如何在 NetBeans IDE 中更改 Maven 的远程存储库 URL 吗?


更新:

在 NetBeans -> Preferences 下可以看到我的 NetBeans IDE 使用的 maven 版本是 Version 3.0.5:

我想你有三个选择。

1。迁移到 11.0

您可以迁移到 Netbeans 11.0 LTS(或 11.2),它使用内置的 Maven 3.3.9 版本。它已经使用 https。

2。安装独立的 Apache Maven

您可以继续使用 Netbeans 8.2,但下载独立的 apache maven,将其安装到您的系统并在 选项 -> Java -> Maven 中设置新的 maven 主目录的路径 - > Maven 主页。

您只需要:

  1. Apache
  2. 下载apache-maven-3.6.3-bin.zip(或apache-maven-3.6.3-bin.tar.gz)
  3. 解压到任意目录。这将是 Maven 的家。
  4. 将 NetBeans 中的 Maven 主目录设置为您解压 zip 文件的目录。
  5. 确保您已在环境变量中设置 JAVA_HOME

说明如何安装独立版本 here

如果您在 NetBeans 中正确设置 Maven Home,它将显示更新的版本:

3。快速但不推荐

只需使用 https 将存储库添加到您的 pom.xml(例如 like that

<repositories>
        <repository>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
        </repository>
    </repositories>
<pluginRepositories>
    <pluginRepository>
        <releases>
            <updatePolicy>never</updatePolicy>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
    </pluginRepository>
</pluginRepositories>

Maven Central 迁移到 https

问题来自this:

As of January 15, 2020, The Central Repository no longer supports insecure communication over HTTP and requires that all requests to the repository are encrypted over HTTPS.

Here is the relevant improvement that was resolved and relevant changes.

在 Netbeans 安装中,这对我有用:

转到 Netbeans installation folder > java > maven > conf,在这里我使用管理权限更新了 settings.xml 文件。

因为 http 存储库 link 现在无法使用,我只是为 central 存储库创建了一个镜像,该镜像是使用 IDE 预先构建的,无法更改。

settings.xml

的镜像标签内添加这个
<mirror>
      <id>mirror1</id>
      <mirrorOf>central</mirrorOf>
      <name>mirror1</name>
      <url>https://repo.maven.apache.org/maven2/</url>
</mirror>

重启 netbeans IDE 后,中央存储库将被我们指定的镜像覆盖。

转到 maven>conf 并更新 settings.xml

<profile>
    <id>maven-https</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    
    
    <repositories> 
        <repository>
            <id>central</id> 
            <url>https://repo1.maven.org/maven2</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
         
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>central</id>
            <url>https://repo1.maven.org/maven2</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>  
</profile>