Gradle:覆盖依赖项目的jar任务
我是gradle的新手,所以如果这个问题很琐碎,请不要介意。 我在gradle有一个多项目树。 我的logp公共项目有以下构建脚本Gradle:覆盖依赖项目的jar任务,gradle,Gradle,我是gradle的新手,所以如果这个问题很琐碎,请不要介意。 我在gradle有一个多项目树。 我的logp公共项目有以下构建脚本 configurations { protobuf compile.extendsFrom protobuf } version = '5.1' defaultTasks = ['clean', 'jar'] dependencies { compile 'net.atomex.schema:rtb-proto:1.0.7
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'
}
}
现在的问题是,在logpcommonjar中有protobufjar包含的类,因为logpcommon是一个uber jar。
我无法删除它,因为logpcommonjar有时单独使用,所以它应该包含protobufjar类。
但是如果我从userEventJob作为依赖项调用logpcommon,我不需要protobuf类
谢谢。您可以在logp项目中生成两个不同的jar,一个作为独立的uberjar,另一个作为瘦jar,在第二个项目中用作依赖项。没有一种简单的方法可以将jar的一部分作为依赖项添加到第二个项目。@RaGe:我添加了第二个任务,当独立调用时,该任务会生成所需的输出。但是,我如何使它成为构建任务的一部分,以便每当我进行“gradle clean build”时,它都会创建两个Jar。?将第二个任务设置为
类型:Jar
,然后在构建过程运行Jar
任务时运行它实际上,我会说,不要像上面那样覆盖Jar任务,只需创建一个类型为jar的额外fatjar任务,以创建一个包含protobuf的jar。默认jar将生成瘦jar您可以在logp项目中生成两个不同的jar,一个作为独立的uberjar,另一个作为瘦jar在第二个项目中用作依赖项。没有一种简单的方法可以将jar的一部分作为依赖项添加到第二个项目。@RaGe:我添加了第二个任务,当独立调用时,该任务会生成所需的输出。但是,我如何使它成为构建任务的一部分,以便每当我进行“gradle clean build”时,它都会创建两个Jar。?将第二个任务设置为类型:Jar
,然后在构建过程运行Jar
任务时运行它实际上,我会说,不要像上面那样覆盖Jar任务,只需创建一个类型为jar的额外fatjar任务,以创建一个包含protobuf的jar。默认jar将生成您的瘦jar