2013-10-24 16 views
13

Wir haben ein Paket, das sich auf einige Anforderungen bezieht, die entfernt wurden, aber wir möchten den Code nicht unbedingt löschen, da es die Möglichkeit gibt, dass er in Zukunft wieder benötigt wird. In unserem bestehenden Ameisenbau haben wir gerade ausgeschlossen, dass dieses Paket in unserem Krug kompiliert wird. Diese Klassen kompilieren nicht, da wir ihre Abhängigkeiten ebenfalls entfernt haben, sodass sie nicht in den Build aufgenommen werden können.Gradle: Wie man ein bestimmtes Paket aus einem Glas ausschließt?

Ich bin versucht, diese Funktionalität in Gradle zu imitieren, wie folgt:

jar { 
    sourceSets.main.java.srcDirs = ['src', '../otherprojectdir/src'] 

    include (['com/ourcompany/somepackage/activityadapter/**', 
       ... 
     'com/ourcompany/someotherpackage/**']) 

    exclude(['com/ourcompany/someotherpackage/polling/**']) 
} 

Auch mit dem Anruf ausschließen oben (und ich habe es ohne die eckigen Klammern versucht, so gut), gradle noch versucht zu Kompilieren Sie die polling Klassen, die Kompilierungsfehler verursacht. Wie verhindere ich, dass Gradle versucht, das Paket zu kompilieren?

Antwort

24

Wenn Sie einige Quellen haben, die nicht kompiliert werden sollen, müssen Sie einen Filter für die Quellen deklarieren, nicht für die Klassendateien, die in den Jar eingegeben werden. Etwas wie:

sourceSets { 
    main { 
     java { 
      include 'com/ourcompany/somepackage/activityadapter/**' 
      include 'com/ourcompany/someotherpackage/**' 
      exclude 'com/ourcompany/someotherpackage/polling/**' 
     } 
    } 
} 
+1

Dank! Wusste, dass ich dort nicht ganz zielgerichtet war. – StormeHawke

+1

@Peter Danke für deine Antwort. Das Problem ist, dass die Klasse auch in anderen Abhängigkeiten der neueren Version gefunden wurde. Ich möchte die neuere Version verwenden und die Klasse von der älteren Version ausschließen. – Achaius

22

Diese Lösung ist gültig, wenn Sie diese Pakete kompilieren möchte nicht, dass, aber wenn Sie sie kompilieren wollen und verstehen sich inklusive von Ihrem JAR könnten Sie

// tag::jar[] 
jar { 
    exclude('mi/package/excluded/**') 
    exclude('mi/package/excluded2/**') 
} 
// end::jar[] 
+0

Kann ich nicht schreiben in meiner build.gradle Datei, können Sie mir vorschlagen, wo kann ich das, Vielen Dank im Voraus. –

Verwandte Themen