โครงการ gradle ของฉันใช้application
ปลั๊กอินเพื่อสร้างไฟล์ jar ในฐานะส่วนหนึ่งของการขึ้นต่อกันของการส่งผ่านรันไทม์ฉันจึงดึงเข้าorg.slf4j:slf4j-log4j12
มา (อ้างอิงว่าเป็น sub-transitive dependency อย่างน้อย 5 หรือ 6 การพึ่งพาสกรรมกริยาอื่น ๆ - โครงการนี้ใช้สปริงและ hadoop ดังนั้นทุกอย่างยกเว้นอ่างล้างจานจะถูกดึงเข้ามา ... ไม่ต้องรอ ... นั่นก็เช่นกัน :) ).
ฉันต้องการแยกslf4j-log4j12
โถออกจากโถที่สร้างขึ้นทั่วโลก ฉันได้ลองสิ่งนี้แล้ว:
configurations {
runtime.exclude group: "org.slf4j", name: "slf4j-log4j12"
}
แต่นี้ดูเหมือนว่าจะไม่รวมทุก สิ่งประดิษฐ์รวมทั้งorg.slf4j
slf4j-api
เมื่อทำงานภายใต้โหมดดีบักฉันเห็นบรรทัดเช่น:
org.slf4j#slf4j-api is excluded from com.pivotal.gfxd:gfxd-demo-mapreduce:1.0(runtime).
org.slf4j#slf4j-simple is excluded from com.pivotal.gfxd:gfxd-demo-mapreduce:1.0(runtime).
org.slf4j#slf4j-log4j12 is excluded from org.apache.hadoop:hadoop-common:2.2.0(runtime).
ฉันไม่ต้องการค้นหาแหล่งที่มาของslf4j-log4j12
การพึ่งพาการส่งผ่านข้อมูลแต่ละรายการแล้วมีcompile foo { exclude slf4j... }
ข้อความแต่ละรายการในไฟล์dependencies
บล็อก
อัปเดต:
ฉันได้ลองสิ่งนี้ด้วย:
configurations {
runtime.exclude name: "slf4j-log4j12"
}
ซึ่งท้ายที่สุดแล้วไม่รวมทุกอย่างจากการสร้าง! ตามที่ระบุไว้group: "*"
.
อัปเดต 2:
ฉันใช้ Gradle เวอร์ชัน 1.10 สำหรับสิ่งนี้