Repositori HTTPS aman Maven dan JDK5

Sejak Januari 2020, maven telah mengalihkan repo mereka dari HTTP ke HTTPS. Agar proyek saya (berjalan dengan Java 5 + maven 3.1.1) dapat mengunduh repo, saya mengubah di pom.xml repo saya untuk dilihat: https://repo.maven.apache.org/maven2 Ini berfungsi dengan baik dan sekarang maven mencoba mengakses dependensi dari repositori aman. Mencoba membangun/membersihkan proyek saya, saya menghadapi masalah berikut:

Masalah 1 Saat mencoba membersihkan proyek saya tanpa argumen lebih lanjut, saya menerima kesalahan berikut: Tidak dapat mentransfer artefak org.apache.maven.plugins:maven-clean-plugin:pom:2.5 dari/ ke pusat (https://repo.maven.apache.org/maven2): rekan bukan diautentikasi -> [Bantuan 1]

Saya mencoba mengatasi kesalahan tersebut dengan menambahkan argumen berikut: mvn -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true clean

Kesalahan baru: Tidak dapat mentransfer artefak org.apache.maven.plugins:maven-clean-plugin:pom:2.5 dari/ke pusat (https://repo.maven.apache.org/maven2): Koneksi tertutup host jarak jauh selama jabat tangan: Rekan SSL salah dimatikan -> [Bantuan 1]

Upaya lebih lanjut dengan menambahkan juga argumen berikut: -Dhttps.protocols=TLSv1.2,TLSv1.1 Mengatasi kesalahan baru:

Tidak dapat mentransfer artefak org.apache.maven.plugins:maven-clean-plugin:pom:2.5 dari/ke pusat (https://repo.maven.apache.org/maven2): TLSv1.2 -> [Bantuan 1]

Masalah 2 Saya mencoba dengan pendekatan berbeda dengan menggunakan sertifikat yang disediakan dari https://repo.maven.apache.org/maven2/ Saya mengimpor sertifikat ke toko kepercayaan dan mencoba menggunakannya dengan perintah maven berikut:

mvn -Djavax.net.ssl.trustStore=C:\PortableApps\trust.jks -Djavax.net.ssl.trustStorePassword=lulus -Djavax.net.ssl.keyStore=C:\PortableApps\trust.jks -Djavax .net.ssl.keyStoreType=jks -Djavax.net.ssl.keyStorePassword=lulus bersih

Errornya sama seperti sebelumnya lagi Tidak dapat mentransfer artefak org.apache.maven.plugins:maven-clean-plugin:pom:2.5 dari/ke pusat (https://repo.maven.apache.org/maven2): rekan tidak diautentikasi -> [Bantuan 1]

Saya mulai percaya, bahwa ini tidak akan berfungsi dengan Java 5 karena keterbatasan JVM. Sebagai resolusi terakhir, saya menemukan penggunaan repo tidak aman http://insecure.repo1.maven.org/maven2/ tetapi saya ingin melakukan ini sebagai pilihan terakhir saya. Ada saran lebih lanjut?

Catatan

  • Pada proyek lain dengan Java 7, saya dapat menyelesaikan semua masalah dengan menggunakan maven versi terbaru 3.6.3
  • Karena proyek ini hanya kompatibel dengan Java 5, saya dibatasi dalam menggunakan versi maven hingga 3.1.1

person Stephan    schedule 29.01.2020    source sumber
comment
Anda dapat menggunakan toolchain untuk mengkompilasi dan menguji proyek Anda dengan JDK 5 sedangkan Maven berjalan dengan JDK 7 .... maven.apache.org/guides/mini/guide-using-toolchains.html   -  person khmarbaise    schedule 29.01.2020
comment
apakah ini disarankan sebagai resolusi karena apa yang saya coba lakukan tidak akan berfungsi dengan jdk5 atau ini hanya solusi? Terimakasih atas balasan anda   -  person Stephan    schedule 29.01.2020
comment
Coba gunakan proxy: maven.apache.org/guides/mini/guide-proxies .html , server proxy harus menyediakan http biasa untuk klien maven Anda, tetapi akan menghubungkan dirinya ke repositori https maven, karena masalahnya ada pada klien yang sudah ketinggalan zaman - akan membantu.   -  person Alex Chernyshev    schedule 29.01.2020
comment
Solusi lainnya adalah dengan menggunakan manajer repositori seperti Nexus ...Ini adalah pengaturan yang sangat saya rekomendasikan untuk menjalankan Maven dll. dalam lingkungan perusahaan yang akan menangani bagian https...saya juga akan merekomendasikan untuk meningkatkan versi Maven Anda juga Anda dapat mengubah konfigurasi proyek Anda dan membangun dengan JDK7+ dan menentukan target to JDK 5 ..? dan saya sangat menyarankan untuk menggunakan koneksi https.....   -  person khmarbaise    schedule 29.01.2020
comment
Alex Chernyshev, saya tidak bisa menggunakan opsi ini, karena dalam kasus ini saya perlu memaksa orang lain yang mengkompilasi aplikasi di lingkungan berbeda, untuk membuat proxy hanya untuk kasus ini juga.   -  person Stephan    schedule 29.01.2020
comment
khmarbaise, saya akan melihat proposal pertama Anda juga tentang Nexus. Seperti yang saya katakan, saya tidak dapat melampaui versi maven 3.1.1 karena ketidakcocokan dengan Java 5. Sayangnya membangun dengan JDK7 bukanlah suatu pilihan. Kami semacam berkewajiban menjaga Java 5. Pertanyaan saya, apakah ada solusi (tanpa menggunakan nexus, proxy, dll) untuk masalah ini atau tidak karena Java 5. Ini belum jelas bagi saya.   -  person Stephan    schedule 29.01.2020
comment
@Stephan Saya tidak yakin apakah ini jelas bagi Anda, jadi izinkan saya menambahkan: Anda dapat membuat aplikasi dengan JDK 1.7 untuk Java 5. Nanti Anda dapat menjalankannya di JDK 1.5 meskipun Anda membangunnya dengan JDK 1.7.   -  person J Fabian Meier    schedule 29.01.2020
comment
@JF Meier saya menyadarinya. tapi seperti yang saya katakan di komentar saya di atas, saya terpaksa menggunakan Java 5 saja. Tidak lebih besar, untuk alasan apa pun (build/run). Saya telah memecahkan masalah saya dengan menggunakan repo tidak aman insecure.repo1.maven.org/maven2 , tapi saya masih bertanya-tanya apakah ada cara menggunakan Java 5 dan masih menggunakan https.   -  person Stephan    schedule 29.01.2020
comment
@Stephan Saya merasa aneh bahwa Anda dipaksa melakukan hal seperti itu. Meskipun ini merupakan pedoman atau aturan perusahaan/proyek Anda, upaya untuk berbicara dengan orang-orang terkait dan meminta mereka untuk mengubahnya akan bermanfaat.   -  person J Fabian Meier    schedule 29.01.2020
comment
Terima kasih atas bantuan dan balasan Anda. Tapi kami akan keluar dari ruang lingkup sekarang :). Saya yakin pertanyaannya cukup sederhana. Bisakah semua proposal yang saya baca online untuk repo maven aman yang baru, berfungsi dengan Java 5? Jika ya, apa yang saya lewatkan? Mari kita kecualikan fakta keberadaan Java 6 atau 7.   -  person Stephan    schedule 29.01.2020
comment
Tampaknya ini tidak dapat berfungsi dengan Java 5 karena dukungan TLS   -  person Stephan    schedule 29.01.2020


Jawaban (1)


Saya akhirnya menggunakan repo maven yang tidak aman http://insecure.repo1.maven.org/maven2/ agar dapat berfungsi dengan Java 5 (build/run).

Alternatifnya, seperti yang disarankan beberapa orang di komentar, Anda dapat menggunakan JDK 7 untuk proses pembangunan Anda guna mengunduh dependensi dari repositori pakar aman dan Java 5 untuk menjalankan aplikasi Anda.

Tampaknya, tidak ada cara untuk mengakses repo maven yang aman saat menggunakan Java 5 karena kurangnya dukungan TLSv1.2 yang tampaknya digunakan maven (https://central.sonatype.org/articles/2018/Mei/04/dihentikan-dukungan-untuk-tlsv11-dan-dibawahnya/?__hstc=31049440.13cc707ef0d169390d4d7ac8ba12c78e.1571910247825.1579506965027.1580304556973.4&__hssc=31049440.1.1580304556973&__hsfp=1122763312)

person Stephan    schedule 29.01.2020