Maven ที่เก็บ HTTPS ที่ปลอดภัยและ JDK5

ตั้งแต่เดือนมกราคม 2020 Maven ได้เปลี่ยน repo จาก HTTP เป็น HTTPS เพื่อให้โครงการของฉัน (ทำงานด้วย Java 5 + maven 3.1.1) เพื่อดาวน์โหลด repos ฉันเปลี่ยนใน pom.xml repos ที่ต้องการ: https://repo.maven.apache.org/maven2 สิ่งนี้ใช้ได้ดี และตอนนี้ maven พยายามเข้าถึงการขึ้นต่อกันจากพื้นที่เก็บข้อมูลที่ปลอดภัย กำลังพยายามสร้าง/ทำความสะอาดโครงการของฉัน ฉันประสบปัญหาต่อไปนี้:

ปัญหาที่ 1 กำลังพยายาม mvn ทำความสะอาดโปรเจ็กต์ของฉันโดยไม่มีข้อโต้แย้งเพิ่มเติม ฉันได้รับข้อผิดพลาดต่อไปนี้: ไม่สามารถถ่ายโอนสิ่งประดิษฐ์ org.apache.maven.plugins:maven-clean-plugin:pom:2.5 จาก/ ไปยังศูนย์กลาง (https://repo.maven.apache.org/maven2): ไม่ใช่เพื่อน รับรองความถูกต้อง -> [ความช่วยเหลือ 1]

ฉันพยายามหลีกเลี่ยงข้อผิดพลาดโดยเพิ่มอาร์กิวเมนต์ต่อไปนี้: mvn -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true clean

ข้อผิดพลาดใหม่: ไม่สามารถถ่ายโอนสิ่งประดิษฐ์ org.apache.maven.plugins:maven-clean-plugin:pom:2.5 จาก/ไปยังศูนย์กลาง (https://repo.maven.apache.org/maven2): โฮสต์ระยะไกลปิดการเชื่อมต่อระหว่างการจับมือกัน: เพียร์ SSL ปิดตัวลงอย่างไม่ถูกต้อง -> [ความช่วยเหลือ 1]

ลองเพิ่มเติมโดยการเพิ่มอาร์กิวเมนต์ต่อไปนี้: -Dhttps.protocols=TLSv1.2,TLSv1.1 แก้ไขเป็นข้อผิดพลาดใหม่:

ไม่สามารถถ่ายโอนสิ่งประดิษฐ์ org.apache.maven.plugins:maven-clean-plugin:pom:2.5 จาก/ไปยังศูนย์กลาง (https://repo.maven.apache.org/maven2): TLSv1.2 -> [ช่วยเหลือ 1]

ปัญหาที่ 2 ฉันพยายามใช้แนวทางอื่นโดยใช้ใบรับรองที่ได้รับจาก https://repo.maven.apache.org/maven2/ ฉันนำเข้าใบรับรองไปยังร้านค้าที่เชื่อถือได้และพยายามใช้สิ่งนี้ด้วยคำสั่ง maven ต่อไปนี้:

mvn -Djavax.net.ssl.trustStore=C:\PortableApps\trust.jks -Djavax.net.ssl.trustStorePassword=pass -Djavax.net.ssl.keyStore=C:\PortableApps\trust.jks -Djavax .net.ssl.keyStoreType=jks -Djavax.net.ssl.keyStorePassword=ผ่านการทำความสะอาด

ข้อผิดพลาดเหมือนกับครั้งก่อนอีกครั้ง ไม่สามารถถ่ายโอน artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 จาก/สู่ศูนย์กลาง (https://repo.maven.apache.org/maven2): เพียร์ไม่ได้รับการรับรองความถูกต้อง -> [ช่วยเหลือ 1]

ฉันเริ่มเชื่อว่านี่ไม่ใช่การทำงานกับ Java 5 เนื่องจากข้อจำกัดของ JVM จากการแก้ปัญหาครั้งล่าสุด ฉันพบว่าการใช้งาน repo ที่ไม่ปลอดภัย http://insecure.repo1.maven.org/maven2/ แต่ฉันอยากทำสิ่งนี้เป็นตัวเลือกสุดท้ายของฉัน มีข้อเสนอแนะเพิ่มเติมหรือไม่?

หมายเหตุ

  • ในโครงการอื่นที่มี Java 7 ฉันสามารถแก้ไขปัญหาทั้งหมดได้โดยใช้ maven เวอร์ชัน 3.6.3 ล่าสุด
  • เนื่องจากโปรเจ็กต์นี้เข้ากันได้กับ Java 5 เท่านั้น ฉันจึงถูกจำกัดในการใช้ maven เวอร์ชันสูงสุด 3.1.1

person Stephan    schedule 29.01.2020    source แหล่งที่มา
comment
คุณสามารถใช้ toolchain เพื่อคอมไพล์และทดสอบโปรเจ็กต์ของคุณด้วย JDK 5 ในขณะที่ Maven รันด้วย JDK 7 .... maven.apache.org/guides/mini/guide-using-toolchains.html   -  person khmarbaise    schedule 29.01.2020
comment
สิ่งนี้ถูกแนะนำว่าเป็นวิธีแก้ปัญหาเนื่องจากสิ่งที่ฉันพยายามทำจะไม่ทำงานกับ jdk5 หรือนี่เป็นเพียงวิธีแก้ปัญหาเท่านั้น ขอบคุณสำหรับการตอบกลับของคุณ   -  person Stephan    schedule 29.01.2020
comment
ลองใช้พรอกซี: maven.apache.org/guides/mini/guide-proxies .html พร็อกซีเซิร์ฟเวอร์ควรจัดเตรียม http ธรรมดาสำหรับไคลเอ็นต์ Maven ของคุณ แต่จะเชื่อมต่อตัวเองกับที่เก็บ https ของ Maven เนื่องจากปัญหาอยู่ในไคลเอ็นต์ที่ล้าสมัย - น่าจะช่วยได้   -  person Alex Chernyshev    schedule 29.01.2020
comment
วิธีแก้ไขปัญหาอื่นคือใช้ตัวจัดการพื้นที่เก็บข้อมูลเช่น Nexus ...นี่คือการตั้งค่าที่ฉันแนะนำอย่างยิ่งสำหรับการใช้งาน Maven ฯลฯ ภายในสภาพแวดล้อมขององค์กรซึ่งจะจัดการส่วน https...นอกจากนี้ฉันขอแนะนำให้อัปเกรดเวอร์ชัน Maven ของคุณด้วย คุณสามารถเปลี่ยนการกำหนดค่าโปรเจ็กต์ของคุณและสร้างด้วย JDK7+ และกำหนด target to JDK 5 ..? และฉันขอแนะนำอย่างยิ่งให้ใช้การเชื่อมต่อ https.....   -  person khmarbaise    schedule 29.01.2020
comment
Alex Chernyshev ฉันไม่สามารถเลือกใช้ตัวเลือกนี้ได้ เนื่องจากในกรณีนี้ ฉันจะต้องบังคับให้ผู้อื่นที่คอมไพล์แอปพลิเคชันในสภาพแวดล้อมที่แตกต่างกัน ให้สร้างพรอกซีสำหรับในกรณีนี้เช่นกัน   -  person Stephan    schedule 29.01.2020
comment
khmarbaise ฉันจะดูข้อเสนอแรกของคุณเกี่ยวกับ Nexus ด้วย อย่างที่ฉันบอกไปแล้ว ฉันไม่สามารถใช้งานเวอร์ชัน maven 3.1.1 ได้เนื่องจากไม่เข้ากันกับ Java 5 การสร้างด้วย JDK7 ไม่ใช่ตัวเลือก เรามีภาระผูกพันในการบำรุงรักษา Java 5 แต่คำถามของฉันคือมีวิธีแก้ไข (โดยไม่ใช้ Nexus พรอกซี ฯลฯ) สำหรับปัญหานี้หรือไม่เนื่องจาก Java 5 สิ่งนี้ยังไม่ชัดเจนสำหรับฉัน   -  person Stephan    schedule 29.01.2020
comment
@Stephan ฉันไม่แน่ใจว่าสิ่งนี้ชัดเจนสำหรับคุณหรือไม่ ดังนั้นให้ฉันเพิ่ม: คุณสามารถสร้างแอปพลิเคชัน ด้วย JDK 1.7 สำหรับ Java 5 คุณสามารถเรียกใช้ในภายหลังได้ JDK 1.5 แม้ว่าคุณจะสร้างมันด้วย JDK 1.7 ก็ตาม   -  person J Fabian Meier    schedule 29.01.2020
comment
@JF Meier ฉันรู้เรื่องนี้แล้ว แต่อย่างที่ฉันบอกไปแล้วในความคิดเห็นของฉันข้างต้น ฉันถูกบังคับให้ใช้ java 5 เท่านั้น ไม่มากไปกว่านี้ไม่ว่าด้วยเหตุผลใดก็ตาม (สร้าง/รัน) ฉันได้แก้ไขปัญหาของฉันโดยใช้ repo ที่ไม่ปลอดภัย insecure.repo1.maven.org/maven2 แต่ฉันก็ยังสงสัยว่ามีวิธีใช้ Java 5 และยังคงใช้ https อยู่หรือไม่   -  person Stephan    schedule 29.01.2020
comment
@ สเตฟาน ฉันคิดว่ามันแปลกที่คุณถูกบังคับให้ทำอะไรแบบนั้น แม้ว่านี่จะเป็นแนวทางหรือกฎเกณฑ์ของบริษัท/โครงการของคุณ แต่ก็คุ้มค่าที่จะพูดคุยกับบุคคลที่เกี่ยวข้องและขอให้พวกเขาเปลี่ยนแปลง   -  person J Fabian Meier    schedule 29.01.2020
comment
ขอขอบคุณทุกท่านสำหรับความช่วยเหลือและการตอบกลับของคุณ แต่ตอนนี้เรากำลังจะนอกขอบเขตแล้ว :) . ฉันเชื่อว่าคำถามค่อนข้างง่าย ข้อเสนอที่ทั้งหมดที่ฉันอ่านออนไลน์สำหรับ repo maven ที่ปลอดภัยใหม่ ทำงานกับ Java 5 ได้หรือไม่ ถ้าใช่ สิ่งที่ฉันหายไป? ให้แยกข้อเท็จจริงของการมีอยู่ของ Java 6 หรือ 7 ออก   -  person Stephan    schedule 29.01.2020
comment
ดูเหมือนว่าสิ่งนี้ไม่สามารถทำงานกับ Java 5 ได้เนื่องจากการรองรับ TLS   -  person Stephan    schedule 29.01.2020


คำตอบ (1)


ฉันลงเอยด้วยการใช้ repo maven ที่ไม่ปลอดภัย http://insecure.repo1.maven.org/maven2/ เพื่อให้ทำงานกับ Java 5 (build/run)

ทางเลือก ตามที่บางคนแนะนำไปแล้วในความคิดเห็น คุณอาจใช้ JDK 7 สำหรับกระบวนการสร้างของคุณเพื่อดาวน์โหลดการขึ้นต่อกันจากที่เก็บ maven ที่ปลอดภัยและ Java 5 สำหรับการเรียกใช้แอปของคุณ

ดูเหมือนว่าไม่มีวิธีใดในการเข้าถึง repo maven ที่ปลอดภัยในขณะที่ใช้ Java 5 เนื่องจากขาดการสนับสนุน TLSv1.2 ซึ่ง maven ดูเหมือนว่าจะใช้ (https://central.sonatype.org/articles/2018/พฤษภาคม/04/discontinued-support-for-tlsv11-and-below/?__hstc=31049440.13cc707ef0d169390d4d7ac8ba12c78e.1571910247825.1579506965027.1580304556973.4&__hssc=31049440.1.1580304556973&__hsfp=1122763312)

person Stephan    schedule 29.01.2020