2014-11-03 19 views
11

benim tüm proje yapılandırma bu basit build.sbt olduğunu varsayalım:Scalaz, projemin API belgelerinde neden görünüyor?

scalaVersion := "2.11.4" 

libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.1.0" 

Ve bu benim kodudur: Ben sbt doc çalıştırın ve tarayıcıda API docs açtığınızda Şimdi

import scalaz.Equal 
import scalaz.syntax.equal._ 

object Foo { 
    def whatever[A: Equal](a: A, b: A) = a === b 
} 

, ben scalaz bakınız ScalaDoc kök paketi listeleme paketimde, Foo ile birlikte,

scalaz package

önce Scalaz ile bu fark ettik ve ben (örneğin Argonaut ait currently published version görüyorum olur tek değilim:Veya, eğer bana inanmıyorsan API dokümanları). Scalaz'dan başka bir kütüphanede olduğunu gördüğümden emin değilim.

Aslında proje kodumda Scalaz'dan herhangi bir şey kullanmıyorsam, bu görünmüyor. Aynı şey en az 2.10.4 ve 2.11.4'te gerçekleşir.

scalaz paketi neden burada gösteriliyor ve nasıl durdurabilirim?

cevap

9

Bunu da farkettim. Aynı zamanda Akka'dan gelen akka.pattern paketinin yanı sıra, upickle projesinden gelen upickle paketi ile gerçekleşir.

  1. Paketin
  2. Bir mixin özellik olarak en az bir tip tanımlama nesneleri vardır:

    Bu üç paket iki ortak özelliğe sahiptir.

    Proje A:

    trait SomeFunctionality { 
        class P(val s: String) 
    } 
    
    package object projectA extends SomeFunctionality 
    

    Proje B (Proje A bağlıdır):

    package projectB 
    import projectA._ 
    
    object B extends App { 
        val p = new P("Test") 
    } 
    

    Ve voila:

Yani iki proje ile küçük bir deney yaptım içinde B projesinin ScalaDoc kök paketinde iki paket görünür:

projectA 
projectB 

Yukarıdaki her iki kriterin de yerine getirilmesi gerekiyor gibi görünüyor, çünkü bir sorunu ortadan kaldırarak sorunu çözüyor.

Bunun, scala derleyicisindeki bir hata olduğuna inanıyorum. Bu yüzden, bundan kaçınmak için size yardımcı olamam çünkü bu durumda scalaz kaynaklarını değiştirmenin tek yolu olacaktır. ProjectA'daki tüm referansların kaldırılması haricinde, ProjectB'deki herhangi bir şeyin değiştirilmesi yardımcı olmadı.


Güncelleme: Eğer exclude specific packages from scaladoc için derleyiciye gibi görünüyor.

scaladoc -skip-packages <pack1>:<pack2>:...:<packN> files.scala 

Yani bu burada

+1

1 ve teşekkür bir çözüm olurdu! Scalaz'i değiştirmeyi gerektirmeyen bir çözümün olması durumunda bunu şimdilik açık bırakacağım, ama bu harika. Açık bir konu varsa herhangi bir fikrin var mı? –

+1

@TravisBrown güncellemeyi gör ... bana bir çözüm var. Eşleşen bir sorun bulamadım. Şüpheli görünen sadece bazı kapalı olanlar. Yarın daha yakından bakacağım! –

+2

Evet, paket nesnelerinin buggy olduğu biliniyor. Bu arada, @retronym yakın zamanda bu bölgeyi temizlemeye çalışıyor: https://github.com/retronym/scala/compare/scala:2.12.x...ticket/8862-2 –

İlgili konular