我是新手,所以请不要介意这个问题是否是微不足道的。 我有一个gradle的多项目树。 我的logp-common项目有以下构建脚本
configurations {
protobuf
compile.extendsFrom protobuf
}
version = '5.1'
defaultTasks = ['clean', 'jar']
dependencies {
compile 'net.atomex.schema:rtb-proto:1.0.7-SNAPSHOT'
compile 'net.sf.json-lib:json-lib:1.0:jdk15'
compile 'org.slf4j:slf4j-log4j12:1.6.1'
compile 'nl.bitwalker:UserAgentUtils:1.6'
compile 'org.apache.pig:pig:0.8.0'
compile 'args4j:args4j:2.0.16'
compile ('org.apache.hadoop:hadoop-core:0.20.2-cdh3u3') {
exclude group:'com.cloudera.cdh', module:'hadoop-ant'
exclude group:'javax.servlet', module:'jsp-api'
}
protobuf 'com.google.protobuf:protobuf-java:2.4.1'
compile 'com.google.guava:guava:15.0'
testCompile 'junit:junit:4.8.2'
}
jar {
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
manifest { attributes 'Main-Class': 'test.Main' }
}
然后有userEventJob项目使用这个(logp-common)项目作为依赖项。
dependencies {
compile project(':logp-common')
compile 'args4j:args4j:2.0.16'
compile 'junit:junit:4.8.1'
compile project(':input-file-provider')
compile 'org.apache.hive:hive-exec:0.13.1'
compile 'com.googlecode.json-simple:json-simple:1.1.1'
}
jar {
version = '1.0'
exclude('*.properties')
exclude('protobuf*.jar')
from(project.configurations.runtime) {
into 'lib'
}
}
现在问题是在logpcommon jar中有来自protobuf jar的类,因为logpcommon是一个超级jar。 我无法删除它,因为logpcommon jar有时会单独使用,然后它应该包含protobuf jar类。 但是,如果我将logpcommon作为userEventJob的依赖项调用,我不想要protobuf类。
感谢。