Gradle:覆盖依赖项目的jar任务

时间:2016-01-20 16:14:23

标签: gradle

我是新手,所以请不要介意这个问题是否是微不足道的。 我有一个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类。

感谢。

0 个答案:

没有答案