2013-10-24 65 views
13

我們有一個與某些已刪除的需求相關的軟件包,但我們不希望刪除代碼,因爲將來可能需要再次刪除這些代碼。所以在我們現有的ant版本中,我們已經排除了在我們的jar中編譯的這個包。這些類不會編譯,因爲我們也刪除了它們的依賴關係,所以它們不能包含在構建中。Gradle:如何從jar中排除特定的包?

我試圖模仿搖籃該功能如下:

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

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

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

即使上面的排除調用(和我已經試過了沒有方括號爲好),gradle產出仍試圖編譯polling類,這會導致編譯失敗。我如何防止Gradle嘗試編譯該軟件包?

回答

24

如果你有一些你不想編譯的源代碼,你必須爲源代碼聲明一個過濾器,而不是放在Jar中的類文件。喜歡的東西:

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

謝謝!知道我不是那裏的目標:) – StormeHawke

+1

@Peter謝謝你的回答。問題是該類還在其他新版本的依賴中發現。我想使用較新的版本並排除舊版本的類。 – Achaius

22

該解決方案是有效的,如果你不想將編譯這些包,但如果你想編譯它們,並從你的JAR排除你可以使用

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

無法在我的build.gradle文件中寫入jar,您能否建議我在哪裏編碼,請提前致謝。 –

相關問題