deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

JDK 23 javadoc, Maven paket dokümantasyonuna sessizce ~4MB DejaVu fontu gömüyor

Bir dev.to yazısı, beklenmedik 8MB'lık Maven Central indirmelerinin izini JDK 23'ün javadoc'unun her dokümantasyon paketine ~4MB DejaVu web fontu gömmesine kadar sürüyor; --no-fonts bayrağı bunları kaldırıyor.

JDK 23 javadoc, Maven paket dokümantasyonuna sessizce ~4MB DejaVu fontu gömüyor

İki minik paket, sekiz megabayt

dev.to'da hrgdavor takma adıyla yazan bir geliştirici, iki küçük Java kütüphanesini Maven Central'a yayınlarken şaşırtıcı bir rakamla karşılaştı. Deposunun kullanım istatistikleri, çifte kabaca 8MB atfediyordu — kilobayt ağırlığında olması gereken artifact'ler için. Sorunun kaynağı kod değil, üretilen API dokümantasyonu oldu.

Yazıya göre JDK 23, javadoc aracının davranışını değiştirdi ve artık ürettiği dokümantasyonun içine toplam yaklaşık 4MB'lık varsayılan bir DejaVu web font seti ekliyor. Her biri javadoc çıktısında kendi font kopyasını taşıyan iki paket, beklenmedik 8MB'ı tam olarak açıklıyor.

Kapatmayı sağlayan bayrak

JDK bir çıkış kapısı sunuyor: javadoc, font gömülmesini engelleyen bir --no-fonts seçeneğini kabul ediyor. Yazı, maven-javadoc-plugin'in bu seçeneği arka plaki javadoc çalıştırılabilir dosyasına iletebileceğini belirtiyor ve 3.11.3 plugin sürümüyle, javadoc çağrısına --no-fonts ekleyen bir additionalOptions yapılandırma girdisi kullanılarak yaklaşımı gösteriyor.

Yazıda ayrıca bir disableNoFonts plugin ayarı ve komut satırından ayarlanabilen bir maven.javadoc.disableNoFonts özelliğinden bahsediliyor; ancak metin ve kod örneği, kullanılacak kesin değerler konusunda tam olarak tutarlı değil. Gösterilen güvenilir yol, bayrağı doğrudan javadoc'a ileten additionalOptions bloğu.

Bir sürüm uyumluluğu tuzağı

Bunu tek satırlık bir düzeltmeden fazlası yapan bir sorun var. Yazının işaret ettiği gibi, --no-fonts yalnızca JDK 23'ten itibaren var. Seçeneği JDK 21 veya daha eski bir sürümde çalışan javadoc'a verirseniz araç bunu tanınmayan bir seçenek olarak reddediyor ve build bozuluyor.

Bu, birden fazla JDK hattında derlenen projeler — bir CI matrisi ya da yerel olarak kurulu hangi JDK'ya sahipse onu kullanan katkıda bulunanlar — bayrağı her yerde sabit kodlayamıyor demek. Ya yalnızca JDK 23 ve üzerinde bu seçeneği uygulayan Maven profillerine, ya da tek bir JDK sürümüne sabitlenmiş bir build'e ihtiyaçları var.

Neden önemli

Değişiklik, tam da hiçbir şey başarısız olmadığı için gözden kaçması kolay. Build'ler başarıyor, üretilen sayfalar aynı görünüyor ve tek görünür belirti, javadoc paketi başına yaklaşık 4MB artan artifact boyutu. Tek bir kütüphane için bu bir rahatsızlık; Maven Central'a javadoc artifact'leri yayınlayan birçok projeyle çarpıldığında, depodan, yansılarından ve her bir aşağı akış tüketicisinin indirmelerinden ve önbelleklerinden akan büyük miktarda gereksiz, bayt bayt aynı font dosyası anlamına geliyor.

Bir javadoc jar'ının belgelediği koddan katbekin büyük olabildiği küçük kütüphane bakımcıları için bu, projenin gerçekte teslim ettiği ayak izini çarpıtıyor. Ve düzeltme belirli bir JDK sürümüne bağlı olduğu için, bir ekibin bugün yazdığı yapılandırma, build'lerinin üzerinde çalıştığı JDK sürümüne bağlı oluyor — bir sonraki sürüm çıkmadan önce kontrol edilmesi gereken bir şey.

  • #java
  • #maven
  • #javadoc
  • #jdk-23
  • #build-tools