强制maven为maven中心使用HTTPS的正确方法是什么?

时间:2014-08-19 21:29:54

标签: java maven

最近的sonatype启用了maven central来支持https(background information)。我现在已经将以下代码段添加到我的pom.xml中,以强制在任何地方使用https:

<!-- force https -->
<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>

问题:

  • 这还够吗?或者某个地方还会涉及http吗?
  • 这是正确的做法吗?正如我读过的那样,我应该在settings.xml中这样做。但是其他使用我的(开源)项目的人不会使用安全连接。

更新

对于例如,它看起来不够程序集插件仍使用HTTP:

[INFO] --- maven-assembly-plugin:2.4:single (make-assembly) @ graphhopper-web ---
Downloading: http://repo.maven.apache.org/maven2/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.jar

6 个答案:

答案 0 :(得分:9)

这已在最新的maven 3.2.3中修复!请参阅changelogs

所以安装maven 3.2.3并执行&rm -rf~ / .m2 / repository / *&#39;为了更好的感觉;)

答案 1 :(得分:6)

在pom.xml文件中添加以下代码,无需删除本地缓存,它的工作原理很像

<distributionManagement>
       <repository>
          <id>Central Maven repository</id>
          <name>Central Maven repository https</name>
          <url>https://repo.maven.apache.org/maven2</url>
       </repository>
    </distributionManagement>

使用终端进行Maven更新

mvn -U clean install

答案 2 :(得分:1)

您可以执行以下操作强制maven使用单个回购:

<settings>
  ...
  <mirrors>
    <mirror>
      <id>internal-repository</id>
      <name>Maven Repository Manager running on https://repo1.maven.org/maven2</name>
      <url>https://repo1.maven.org/maven2</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
  </mirrors>
  ...
</settings>

您可以找到更多信息here

如果您愿意,还可以对回购使用身份验证,信息为here

答案 3 :(得分:0)

要解决此错误,您可以将新存储库添加为https://repo.maven.apache.org/maven2/

enter image description here

答案 4 :(得分:0)

我也遇到了同样的问题,并通过更改代理映射尝试了所有可能的方法,但是没有任何效果,最后我通过在.m2文件夹的setting.xml文件中添加以下代码来解决该问题。

注意:在没有启用setting.xml代理的情况下,对我来说工作正常。

<settings>
<mirrors>
    <mirror>
        <id>internal-repository</id>
        <name>Maven Repository Manager running on https://repo1.maven.org/maven2</name>
        <url>https://repo1.maven.org/maven2</url>
        <mirrorOf>*</mirrorOf>
    </mirror>
</mirrors>

答案 5 :(得分:0)

基于@Karussell,您可以删除特定的程序包来修复它,而不必删除整个本地存储库

  1. 将Maven安装/更新到最新版本(> = 3.2.3
  2. 转到本地存储库目录(〜/ .m2 / repository
  3. 删除 org.apache.maven 下的所有软件包:rm -rf ~/.m2/repository/org/apache/maven/*

通过上述步骤,您将需要重新下载一些Maven的软件包,而无需重新下载整个软件包。