การอ้างอิง Maven ล้มเหลวโดยมีข้อผิดพลาด 501


154

เมื่อเร็ว ๆ นี้Mavenสร้างงานที่ทำงานอยู่ในเจนกินส์มีความล้มเหลวกับด้านล่างยกเว้นบอกว่าพวกเขาไม่สามารถดึงอ้างอิงจากMaven กลางและควรใช้HTTPS ฉันไม่แน่ใจว่าจะเปลี่ยนคำขอจากHTTPเป็นHTTPSได้อย่างไร ใครช่วยแนะนำฉันเกี่ยวกับเรื่องนี้?

[ข้อผิดพลาด] ส่วนขยายบิลด์ที่ไม่สามารถแก้ไขได้:
ปลั๊กอินorg.apache.maven.wagon:wagon-ssh:2.1หรือการอ้างอิงอย่างใดอย่างหนึ่งไม่สามารถแก้ไขได้:
ไม่สามารถรวบรวมการอ้างอิงสำหรับorg.apache.maven.wagon:wagon-ssh:jar:2.1 ():
ไม่สามารถอ่านตัวบ่งชี้สิ่งประดิษฐ์สำหรับorg.apache.maven.wagon:wagon-ssh:jar:2.1:
ไม่สามารถถ่ายโอนสิ่งประดิษฐ์org.apache.maven.wagon:wagon-ssh:pom:2.1จาก / ไปยังส่วนกลาง ( http: //repo.maven.apache org / maven2 ):
ไม่สามารถถ่ายโอนไฟล์: http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom
โค้ดส่งคืนคือ:501, ReasonPhrase:HTTPS Required. -> [Help 2]

กำลังรอให้เจนกิ้นส์เก็บรวบรวมdata[ERROR]
ปลั๊กอินจนเสร็จสิ้นorg.apache.maven.plugins:maven-clean-plugin:2.4.1หรือไม่สามารถแก้ไขได้อย่างใดอย่างหนึ่ง:
ไม่สามารถอ่านตัวบ่งชี้สิ่งประดิษฐ์สำหรับorg.apache.maven.plugins:maven-clean-plugin:jar:2.4.1:
ไม่สามารถถ่ายโอนสิ่งประดิษฐ์org.apache.maven.plugins:maven-clean-plugin:pom:2.4.1จาก / ไปยังส่วนกลาง ( http://repo.maven.apache.org/maven2 ):
ล้มเหลวในการ การถ่ายโอนไฟล์: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin-2.4.1.pom
โค้ดส่งคืนคือ:501 , ReasonPhrase:HTTPS Required. -> [Help 1]


5
คุณกำลังใช้repo.maven.apache.org/maven2 url เพื่อเชื่อมต่อกับศูนย์กลาง maven แทนที่จะใช้repo.maven.apache.org/maven2 เช่นใช้การเชื่อมต่อ https
Manjunath HM

2
ตรวจสอบของคุณsettings.xmlในเจนกินส์สำหรับ URL กลาง Maven
varontron

สวัสดี Manjunath ฉันมีปัญหาเดียวกัน คุณรู้วิธีบังคับ maven ให้ใช้ HTTPS แทน HTTP หรือไม่
Lahiru Madushanka

@Lahiru Madushanka เข้าสู่ลิงก์เพื่อให้คุณได้รับคำตอบสำหรับคำถามของคุณstackoverflow.com/questions/25393298/…
Manjunath HM

1
ฉันเปลี่ยนเวอร์ชัน maven เป็น 3.6.3 และยังคงแสดงข้อผิดพลาดเดียวกัน
dhS

คำตอบ:


129

สาเหตุของข้อผิดพลาดที่สังเกตได้อธิบายไว้ในCentral 501 HTTPS ที่จำเป็น

มีผลตั้งแต่วันที่ 15 มกราคม 2020 พื้นที่เก็บข้อมูลส่วนกลางไม่สนับสนุนการสื่อสารที่ไม่ปลอดภัยผ่าน HTTP ธรรมดาอีกต่อไปและกำหนดให้คำขอทั้งหมดไปยังที่เก็บข้อมูลถูกเข้ารหัสผ่าน HTTPS

ดูเหมือนว่าเวอร์ชันล่าสุดของ Maven (ลองกับ 3.6.0, 3.6.1) กำลังใช้ HTTPS URL อยู่แล้วตามค่าเริ่มต้น

นี่คือวันที่ที่ที่เก็บข้อมูลหลักจะเปลี่ยน:

งานสร้าง Java ของคุณอาจเริ่มต้นตั้งแต่วันที่ 13 มกราคม (หากคุณยังไม่ได้เปลี่ยนการเข้าถึง repo เป็น HTTPS)

อัปเดต: ดูเหมือนว่าจาก maven 3.2.3 maven central เข้าถึงได้ผ่าน HTTPS See https://stackoverflow.com/a/25411658/5820670

Maven Change log ( http://maven.apache.org/docs/3.2.3/release-notes.html )


26
Hi! ฉันเป็นนักวิจัยดั้งเดิมที่เริ่มต้นความคิดริเริ่มของอุตสาหกรรมนี้ คุณสามารถค้นหาโพสต์บล็อกของฉันเกี่ยวกับวันสำคัญที่นี่ได้เช่นกัน: medium.com/@jonathan.leitschuh/…
Jonathan Leitschuh

1
@JonathanLeitschuh โปรดเขียนคำตอบแบบเต็มซึ่งสามารถลงคะแนนและยอมรับ ...
Thorbjørn Ravn Andersen

1
ฉันใช้ maven 3.6.0 บน Ubuntu 18.04 แต่ดูเหมือนว่าจะไม่ใช้ https url
Ashutosh

@Ashutosh: สิ่งเดียวกันที่นั่นกับ Maven 3.6.1 บน Ubuntu 19.10 ฉันไม่แน่ใจว่าทำไมในกรณีนี้อาจเป็นแพทช์ Ubuntu แต่ทำไมพวกเขาถึงทำเช่นนั้น?) ในการแก้ปัญหานี้ให้ใช้คำตอบใด ๆ ด้านล่างที่อัปเดตsettings.xmlไฟล์ (และโหวตขึ้นโปรดเนื่องจากนี่เป็นวิธีแก้ไขที่ถูกต้องนอกเหนือจากการใช้ Maven ที่ได้รับการแก้ไขแล้ว)
Guss

ดังนั้นฉันได้กำหนดค่าsettings.xmlให้ใช้ HTTPS repositories อย่างชัดเจนซึ่งสามารถทำได้ด้วยwgetแต่ด้วยเหตุผลแปลก ๆ บางอย่างmvn archetype:generate -X(เพื่อทดสอบว่าสามารถดาวน์โหลดการพึ่งพาได้หรือไม่) ยังพิมพ์ว่ามันกำลังเข้าถึงDownloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom ความช่วยเหลือใด ๆ ได้ไหม .. ?
Giorgi Tsiklauri

61

ฉันกำลังเผชิญกับปัญหาเดียวกัน มีวิธีแก้ไขปัญหาสองข้อที่ฉันลองใช้และใช้ได้ทั้งสองอย่าง

  • อัพเดตที่เก็บเวอร์ชัน Maven (เวอร์ชัน Maven> = 3.2.3)
  • จำกัด เวอร์ชัน Maven ปัจจุบันเพื่อใช้ลิงก์ HTTPS

อัพเดตที่เก็บเวอร์ชัน Maven:

ดาวน์โหลดไบนารี Apache Maven ที่มีที่อยู่ https เริ่มต้น ( ไบนารี Maven Apache 3.6.3 ) และเปิดหน้าต่างโต้ตอบตัวเลือกในเครื่องมือของแถบเมนู NetBeans ( มุมมอง Java Maven Dialog ) และเลือกตัวเลือกเรียกดูใน Maven Home List Box ( มุมมอง Maven Home List Box ) หลังจากเพิ่ม Apache Maven เวอร์ชันที่ดาวน์โหลดใหม่ ( อัปเดตมุมมองกล่องรายการ Maven Home ) โครงการจะสร้างและทำงานได้สำเร็จ

จำกัด เวอร์ชัน Maven ปัจจุบันเพื่อใช้ลิงก์ HTTPS:

รวมรหัสต่อไปนี้ในpom.xmlของโครงการของคุณ

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

ฉันมีที่เก็บส่วนกลาง แต่ไม่ใช่ที่เก็บปลั๊กอินกลาง นั่นแก้ไขให้ฉัน
ponder275

1
จำกัด เวอร์ชัน Maven ปัจจุบันเพื่อใช้ลิงก์ HTTPS: ใช้งานได้สำหรับฉัน
Mohammad Anas

ในกรณีของฉันฉันพลาดส่วน <pluginRepository> และฉันได้รับข้อผิดพลาดเมื่อใช้ archetypes ทำให้เริ่มต้นที่ http สำหรับปลั๊กอิน
user1708042

สิ่งนี้ได้แก้ไขให้ฉันด้วย แต่ฉันได้รับข้อผิดพลาดอีก "ได้รับการแจ้งเตือนที่ร้ายแรง: protocol_version" และต้องสลับไปที่ java 8 เพื่อแก้ไขในกรณีที่ใครก็ตามสะดุดในปัญหาเดียวกัน
Kim Tang

ฉันยินดีที่ได้มีส่วนร่วม upvote ทำลายเสมอ คำตอบนี้ตอบปัญหาที่คล้ายกันที่ฉันพบ
Brian Risk

36

มีผลตั้งแต่วันที่ 15 มกราคม 2020 พื้นที่เก็บข้อมูลส่วนกลางไม่สนับสนุนการสื่อสารที่ไม่ปลอดภัยผ่าน HTTP ธรรมดาอีกต่อไปและกำหนดให้การร้องขอทั้งหมดไปยังที่เก็บข้อมูลถูกเข้ารหัส HTTPS HTTPS

หากคุณได้รับข้อผิดพลาดนี้คุณจะต้องแทนที่การอ้างอิง URL ทั้งหมดไปที่ Maven Central ด้วย HTTPS ที่ยอมรับได้

(มา )

เราได้ทำการเปลี่ยนแปลงต่อไปนี้ใน build.gradle ของโครงการของฉัน:

เก่า:

repositories {
   maven { url "http://repo.maven.apache.org/maven2" }
}

ใหม่:

repositories {
   maven { url "https://repo.maven.apache.org/maven2" }
}

ใช่ฉันได้แทนที่ไฟล์ setup.xml แต่น่าเสียดายที่มันยังไม่ทำงาน ฉันทำถูกต้องหรือมีไฟล์อื่นที่จำเป็นต้องเปลี่ยน?
Sumeet Vishwas

@SumeetVishwas คุณสามารถแบ่งปันไฟล์ settings.xml ตัวอย่างได้หรือไม่
Arunan Sugunakumar

3
@ArunanSugunakumar ฉันไม่ได้เปลี่ยนใน settings.xml สิ่งที่คุณต้องเปลี่ยนใน POM อัพเดตที่เก็บส่วนกลางของ maven ฉันใส่ตัวอย่างของที่เก็บส่วนกลางในกระทู้ตอบ กรุณาหาด้านล่าง
Sumeet Vishwas

1
คำถามของ OP กล่าวว่า "ฉันไม่แน่ใจว่าจะเปลี่ยนคำขอจาก HTTP เป็น HTTPS ได้อย่างไร" คำตอบนี้ไม่ได้ตอบคำถาม
wchargin

28

ลองกด URL ด้านล่างในเบราว์เซอร์ใดก็ได้ มันจะคืนค่า 501

http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom

โปรดลองด้วย https มันจะดาวน์โหลดไฟล์ pom.xml:

https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom

โปรดเพิ่ม ( https://repo.maven.apache.org/maven2 ) ในไฟล์ setting.xml:

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

1
คุณช่วยยกตัวอย่างการตั้งค่าแบบเต็ม xml ได้เพราะฉันพยายามเพิ่มข้างต้นลงในไฟล์ไม่สำเร็จหรือไม่?
jhertz

พบคำตอบนี้ที่ทำให้ตำแหน่งในไฟล์ชัดเจนขึ้นตอนนี้ใช้งานได้: stackoverflow.com/a/59784045/3120576
jhertz

22

อัพเดทพื้นที่เก็บข้อมูลส่วนกลางของ Maven และการใช้httpsแทนhttp

<repositories>
    <repository>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
        <layout>default</layout>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

ฉันลองสิ่งนี้ใน Pom และใช้งานได้ดี: <repository> <repository> <id> repo ส่วนกลาง https </id> <name> Https ที่เก็บส่วนกลาง </name> <url> repo.maven.apache.org/maven2</ url > </repository> </repository>
ลำ

1
ขอบคุณ สิ่งนี้ทำงานใน Ubuntu 18.10 โดยใช้ Netbeans ต้องตั้ง Maven กลับบ้านเป็น Maven เวอร์ชันล่าสุดใน Netbeans คุณพบโซลูชันนี้ที่ไหน
Sanal S

คุณอาจต้องอัปเดตที่เก็บปลั๊กอินด้วย อย่างน้อยก็ต้องทำเพื่อฉันเช่นกันเพื่อที่จะได้รับการแก้ไข
Kim Tang

16

ฉันกำลังใช้การติดตั้ง Maven / Java แบบใหม่บนคอนเทนเนอร์ Docker

สำหรับฉันฉันต้องcd $M2_HOME/confแก้ไขsettings.xmlไฟล์ที่นั่น เพิ่มบล็อกต่อไปนี้ภายใน<mirrors>...</mirrors>

<mirror>
  <id>central-secure</id>
  <url>https://repo.maven.apache.org/maven2</url>
  <mirrorOf>central</mirrorOf>
</mirror>

คุณช่วยแบ่งปัน Dockerfile ของคุณได้ไหม ฉันมีปัญหาเดียวกัน แต่ฉันไม่ทราบวิธีการแก้ไข!
Han Van Pham

@HanVanPham ฉันอัปเดต maven เป็นเวอร์ชันล่าสุดมีการแก้ไขปัญหา http นี้แล้ว
mehulmpt

สำหรับฉันแล้วการปรับตัวของบล็อกความปลอดภัยส่วนกลางในไฟล์settings.xmlท้องถิ่น($ HOME / .m2 / settings.xml) ทำงานได้อย่างสมบูรณ์แบบ
t3az0r

13

ฉันใช้ Maven เวอร์ชันเก่า (3.0.3 และ 3.1) เวอร์ชันเก่ากว่านี้ไม่รองรับที่เก็บ http อีกต่อไป (ดังที่กล่าวไว้ข้างต้น) การอัพเกรดเป็น Maven 3.6 เป็นการแก้ไขสำหรับฉัน


1
จาก maven 3.2.3 ศูนย์กลางกำลังเข้าถึงผ่าน HTTPS โดยค่าเริ่มต้น maven.apache.org/docs/3.2.3/release-notes.html
Farasath

12

Maven กำลังย้ายไปที่ HTTPS และปิดการใช้งานการเข้าถึง HTTP

เรื่องสั้นจากวันที่ 15 มกราคม 2020 ที่เก็บ Maven Central ไม่สนับสนุนการเชื่อมต่อ HTTP อีกต่อไป (ที่เก็บอื่น ๆ กำลังทำเช่นเดียวกัน) ดังนั้นคุณจะระบุการตั้งค่า Maven / Gradle ของคุณเพื่อใช้ HTTPS URL

สารละลาย:

คุณสามารถเลือกหนึ่งในสามวิธีต่อไปนี้

  1. เพิ่มที่เก็บในpom.xmlไฟล์โครงการของคุณ

    <project>
    ...
      <repositories>
        <repository>
          <id>central maven repo</id>
          <name>central maven repo https</name>
          <url>https://repo.maven.apache.org/maven2</url>
        </repository>
      </repositories>
    </project>
  2. เพิ่มที่เก็บลงในโปรไฟล์ในsettings.xmlไฟล์

    <profile>
      <id>my profile</id>
      <repositories>
        <repository>
          <id>central maven repo</id>
          <name>central maven repo https</name>
          <url>https://repo.maven.apache.org/maven2</url>
          </repository>
      </repositories>
    </profile>
  3. อัปเดตเวอร์ชัน maven ของคุณเป็นเวอร์ชันใหม่ที่ใช้ค่า https เป็นค่าเริ่มต้น เวอร์ชั่นล่าสุดในตอนนี้ 3.6.3 ดาวน์โหลดได้ที่นี่

สำหรับ Gradle:

แทนที่ URL สำหรับรุ่น HTTPS เท่านั้น

repositories {
   maven { url "https://repo.maven.apache.org/maven2" }
}

ในการอัปเกรด (3.3.9 ถึง 3.6.3) คุณต้องถอนการติดตั้งเวอร์ชันเก่าก่อนหรือไม่? หรือเพียงแค่ติดตั้งเวอร์ชันล่าสุด
BigRedEO

1
@BigRedEO คุณสามารถมีเวอร์ชัน maven ได้มากกว่าหนึ่งเวอร์ชันในสภาพแวดล้อมของคุณ อย่างไรก็ตามตัวแปร env $M2_HOMEของคุณ$PATH จะชี้ไปที่หนึ่งในนั้นซึ่งจะเป็นเวอร์ชัน maven เริ่มต้นของคุณ ฉันต้องการถอนการติดตั้งรุ่นเก่าก่อนที่จะติดตั้งใหม่ แต่ขึ้นอยู่กับความต้องการของคุณ
Adam M. Gamboa G.

10

ฉันถูกเพิ่มส่วนรหัสต่อไปนี้ไปที่ setting.xml และแก้ไขปัญหาแล้ว

<mirrors>
    <mirror>
        <id>maven-mirror</id>
        <name>Maven Mirror</name>
        <url>https://repo.maven.apache.org/maven2</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>

9

ฉันมีปัญหาเดียวกัน แต่ฉันใช้GitLabแทน Jenkins ขั้นตอนที่ฉันต้องทำเพื่อแก้ไขปัญหา:

  1. โครงการของฉันอยู่ใน GitLab ดังนั้นจึงใช้ไฟล์ .yml ซึ่งชี้ไปที่อิมเมจ Docker ฉันต้องทำการรวมอย่างต่อเนื่องและภาพที่ใช้มีURL http: // maven ดังนั้นฉันจึงเปลี่ยนเป็นhttps: // maven https:
  2. อิมเมจ Dockerfile เดียวกันนั้นมี Maven เวอร์ชันเก่ากว่า 3.0.1 ซึ่งทำให้ฉันมีปัญหาในชั่วข้ามคืน ฉันอัปเดต Dockerfile เพื่อรับเวอร์ชั่นล่าสุด 3.6.3
  3. จากนั้นฉันปรับใช้ภาพนั้นไปยังที่เก็บออนไลน์ของฉันและอัปเดตโครงการ ymlfile Maven ของฉันเพื่อใช้ภาพใหม่นั้น
  4. และในที่สุดฉันก็อัพเดตไฟล์หลักของโครงการ POM เป็นข้อมูลอ้างอิง https: // maven ...แทนที่จะเป็น http: // maven

ฉันรู้ว่าเฉพาะเจาะจงมากขึ้นสำหรับการตั้งค่าของฉัน แต่หากไม่ทำตามขั้นตอนทั้งหมดข้างต้นฉันจะยังคงได้รับข้อความแสดงข้อผิดพลาดนี้ต่อไป Return code is: 501 , ReasonPhrase:HTTPS Required


คุณช่วยแบ่งปัน Dockerfile ของคุณได้ไหม
Han Van Pham

8

ตามที่ระบุไว้ในคำตอบอื่น ๆตอนนี้httpsจำเป็นต้องทำการร้องขอไปยัง Maven Central ในขณะที่ Maven รุ่นเก่าใช้ http http

หากคุณไม่ต้องการ / ไม่สามารถอัปเกรดเป็น Maven 3.2.3+ คุณสามารถแก้ไขปัญหาได้โดยเพิ่มรหัสต่อไปนี้ลงในMAVEN_HOME \ conf \ settings.xml ของคุณใน<profiles>ส่วน:

<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>

นี่จะเป็นการตั้งค่าที่ใช้งานอยู่เสมอเว้นแต่คุณจะปิดการใช้งาน / แทนที่มันใน POM ของคุณเมื่อจำเป็น


7

สำหรับตัวแปลงรหัสองค์กรทั้งหมดหากคุณได้รับข้อผิดพลาดนี้หมายความว่าฐานรหัสของคุณยังคงถูกสร้างขึ้นจากชุมชนโอเพ่นซอร์ส คุณต้องนั่งพื้นที่เก็บข้อมูล "กลาง" กับผู้จัดการพื้นที่เก็บข้อมูล Maven บริษัท ของคุณ

คุณสามารถไปที่ settings.xml และแทนที่ URL ที่เก็บส่วนกลางของคุณจาก http: // ไปยัง https: //

<M2_HOME>/conf/settings.xml

ค้นหากระจกส่วนและเพิ่มรายการต่อไปนี้:

    <mirror>
     <id>other-mirror</id>
     <name>Other Mirror Repository</name>
     <url>https://other-mirror.repo.other-company.com/maven2</url>
     <mirrorOf>central</mirrorOf>
    </mirror>

ในส่วน URL หากคุณใช้http://repo1.maven.org/maven2/หรือ http://repo.maven.apache.org/maven2/จากนั้น

แทนที่http://repo1.maven.org/maven2/ด้วยhttps://repo1.maven.org/maven2/

แทนที่http://repo.maven.apache.org/maven2/ด้วยhttps://repo.maven.apache.org/maven2/

คุณต้องใช้การจัดการการควบคุมแหล่งที่มา / ที่เก็บ URL ของ บริษัท ของคุณที่นี่ เช่นนี้จะป้องกันการติดต่อใด ๆ กับชุมชนที่เก็บโอเพ่นซอร์ส Maven

ดังที่กล่าวไว้ในคำตอบอื่น ๆ ซึ่งมีผลตั้งแต่วันที่ 15 มกราคม 2563 ที่เก็บ Maven ส่วนกลางไม่สนับสนุนการสื่อสารที่ไม่ปลอดภัยผ่าน HTTP ธรรมดา


หลังจากเพิ่มมิเรอร์ในส่วนมิเรอร์ฉันพบข้อผิดพลาดเพียร์นั้นจะไม่ผ่านการตรวจสอบสิทธิ์ สิ่งที่ฉันควรทำตอนนี้? ขอบคุณ!
dimson

@dimson ซึ่งหมายความว่าคุณพยายามเชื่อมต่อกับ https แต่คุณไม่มีใบรับรองสำหรับการตรวจสอบสิทธิ์อาจเป็นเพราะ Java ไม่ได้มี อิมพอร์ตใบรับรองจากที่เก็บไปยังที่เก็บคีย์ java หรืออัพเกรด Java
tibortru

@tibortru Thanx Man ได้แก้ปัญหาเรียบร้อยแล้ว ฉันได้เพิ่มคุณสมบัติเหล่านี้เพื่อ maven ใน IDE: maven.wagon.http.ssl.insecure = true maven.wagon.http.ssl.allowall = true maven.wagon.http.ssl.ignore.validity.dates = true https โปรโตคอล = TLSv1, TLSv1.1, TLSv1.2 หลังจากนั้นก็ทำงานได้ดี
dimson

ใช่แล้วนั่นเป็นวิธีอื่น ที่ไม่ปลอดภัยหนึ่ง :)
tibortru

7

สำหรับฉัน (coder ขององค์กร) ยังเพิ่มที่เก็บมิเรอร์ในการsettings.xmlแก้ไขปัญหา ฉันยังใช้ Maven ภายในคอนเทนเนอร์นักเทียบท่า

<mirrors>
    <mirror>
        <id>https-mirror</id>
        <name>Https Mirror Repository</name>
        <url>https://repo1.maven.org/maven2</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>

คุณสามารถแสดงให้ฉันเห็นว่าเราสามารถหาไฟล์ settings.xml ได้ที่ @Oscar หรือไม่
Han Van Pham

แน่นอน! ใน Dockerfile ของเราก่อนอื่นเราวางไว้ในโฟลเดอร์ temp ดังนี้ echo "<settings> <mirrors> .... </mirrors> </settings>"> /tmp/maven-settings.xml จากนั้นเราเรียกใช้ maven ด้วยตัวเลือก "-s" และผ่านเส้นทางไปยังไฟล์การตั้งค่าเช่นนี้ "mvn -s /tmp/maven-settings.xml clean" หวังว่ามันจะช่วย!
Oscar Drai

@ han-van-pham คุณพบได้ใน $ HOME / .m2 / ถ้าไม่สร้างมันขึ้นมาที่นั่น
dr0i

4

ใช้ Ubuntu 16.04, java 1.8.0_201

ฉันยกเลิกการติดตั้ง Maven เก่าและติดตั้ง Maven 3.6.3 แล้วยังมีข้อผิดพลาดนี้ที่การพึ่งพา Maven ล้มเหลวด้วยข้อผิดพลาด 501

ตระหนักว่าอาจเป็นปัญหา truststore / keystore ที่เกี่ยวข้องกับการกำหนดให้ https พบว่าตอนนี้คุณสามารถกำหนดค่าตัวเลือก -Djavax โดยใช้ไฟล์ jvm.config ดู: https://maven.apache.org/configure.html https://maven.apache.org/configure.html

ในขณะที่ฉันกำลังใช้ Tomcat ฉันก็คัดลอก keystore & truststore config จาก Tomcat (setenv.sh) ไปยัง jvm.config ของฉันแล้วก็ใช้งานได้!

นอกจากนี้ยังมีตัวเลือกในการส่งการกำหนดค่านี้ใน 'ส่งออก MAVEN_OPTS' (เมื่อใช้ mvn สร้าง) แต่แม้ว่าจะหยุดข้อผิดพลาด 501 มันสร้างขึ้นอีก: มันคาดว่าไฟล์ pom

การสร้างไฟล์ jvm.config แยกต่างหากทำงานได้อย่างสมบูรณ์แบบเพียงแค่ใส่ไว้ในรากของโครงการของคุณ

หวังว่านี่จะช่วยใครซักคนเอาฉันทั้งวันเพื่อคิดออก!


4

ปัญหาเดียวกันนี้ยังเกิดขึ้นสำหรับjcenter

ตั้งแต่วันที่ 13 มกราคม 2020 เป็นต้นไป Jcenter สามารถใช้ได้ที่ HTTPS เท่านั้น

โครงการที่ได้รับการอ้างอิงโดยใช้แบบเดียวกันจะเริ่มประสบปัญหา สำหรับการแก้ไขอย่างรวดเร็วทำต่อไปนี้ใน build.gradle ของคุณ

แทน

repositories {
jcenter ()
//others
}

ใช้สิ่งนี้:

repositories {
jcenter { url "http://jcenter.bintray.com/"}
//others
}

4

ข้อผิดพลาด:

ไม่สามารถถ่ายโอนไฟล์: http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom

โค้ดส่งคืนคือ: 501, ReasonPhrase: HTTPS ต้องมี

การวิเคราะห์สาเหตุที่แท้จริง:

Maven central คาดหวังว่าไคลเอนต์ใช้ https แต่ไคลเอนต์ทำการร้องขอ HTTP ธรรมดาเท่านั้น

ดังนั้นคำขอดาวน์โหลดแพคเกจที่ชื่อว่า 'wagon-ssh-2.1.pom' จึงล้มเหลว

วิธีแก้ไขปัญหา

แทนที่ URL " http://repo.maven.apache.org/maven2 "

ด้วย " https://repo.maven.apache.org/maven2 "

ในไฟล์ pom.xml หรือไฟล์ build.gradle ของโครงการ


2
ฉันจะแทนที่ URL นี้
ที่ไหน

3

แบ่งปันสิ่งนี้ในกรณีที่ทุกคนต้องการ:

Old Gradle config (ไม่มี Gitlab, การปรับใช้ Docker สำหรับโครงการง่าย ๆ )

repositories {
google()
jcenter()

maven { url "http://dl.bintray.com/davideas/maven" }
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'http://repo1.maven.org/maven2' }
maven { url 'http://jcenter.bintray.com' }
}

ใหม่กำหนดค่า:

repositories {
google()
jcenter()

maven { url "https://dl.bintray.com/davideas/maven" }
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'https://repo1.maven.org/maven2' }
maven { url 'https://jcenter.bintray.com' }
}

สังเกตว่า https Happy coding :)


3

สภาพแวดล้อมปัจจุบันของฉันไม่รองรับ HTTPS ดังนั้นการเพิ่มเวอร์ชั่นที่ไม่ปลอดภัยของ repo แก้ไขปัญหาของฉัน: http://insecure.repo1.maven.orgตามSonatype

    <repositories>
       <repository>
          <id>Central Maven repository</id>
          <name>Central Maven repository insecure</name>
          <url>http://insecure.repo1.maven.org</url>
       </repository>
    </repositories>

-3

เพิ่มพื้นที่เก็บข้อมูลต่อไปนี้ในpom.xml

<project>
...
    <repositories>
        <repository>
            <id>central</id>
            <name>Maven Plugin Repository</name>
            <url>https://repo1.maven.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
...
</project>

สิ่งนี้จะทำให้เกิดปัญหาเดียวกันเนื่องจากใช้งานอยู่http
Yudhistira Arya

1
ฉันลองมันใน Pom และใช้งานได้
Sathesh

ฉันก็ลองแล้วทำงาน x2
Javier J Solis Flores
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.