在build.gradle中,我通过一个脚本为tomcat和野蝇构建战争。Wildfly提供了对"javax.mail:mail:1.4.7'.的依赖,但tomcat缺少了这个jar。所以我总是将这个jar添加到${CATALINA_HOME}/lib/中。目前,我正试图从这两个jar迁移到Amazon ElasticBean秸秆,并且我不想弄乱${CATALINA_HOME}/lib/.如何为通配符编写通用的gradle脚本:
dependencies {
....
providedCompile group: 'javax.mail', name: 'mail', version: '1.4.7'
providedCompile group: 'javax.activation', name: 'activation', version: '1.1.1'
...
}对猫来说:
dependencies {
...
compile group: 'javax.mail', name: 'mail', version: '1.4.7'
compile group: 'javax.activation', name: 'activation', version: '1.1.1'
...
}我不是gradle的专家。
@愤怒解决了我的问题。下面的代码是"42“号的最终解决方案。
configurations {
tomcatLibs
}
dependencies {
...
providedCompile group: 'javax.mail', name: 'mail', version: '1.4.7' //provided for wildfly
providedCompile group: 'javax.activation', name: 'activation', version: '1.1.1' //provided for wildfly
tomcatLibs group: 'javax.mail', name: 'mail', version: '1.4.7' //only for tomcat
tomcatLibs group: 'javax.activation', name: 'activation', version: '1.1.1' //only for tomcat
providedCompile group: 'javax.mail', name: 'javax.mail-api', version: '1.5.0'
....
}
//default war for wildfly
war {
....
}
task createTomcatWar(type: War, dependsOn: classes) {
archiveName = 'app-tomcat.war';
classpath configurations.tomcatLibs // adds a configuration to the WEB-INF/lib dir
}
....发布于 2016-01-31 21:58:26
添加一个附加配置,以保存范围更改的依赖项:
configurations {
optLibs
}将依赖项添加到刚才创建的配置中:
dependencies{
...
optLibs 'javax.mail:mail:1.4.7'
optLibs 'javax.activation:activation:1.1.1'
compile 'foo'
runtime 'bar'
...
providedCompile.extendsFrom(optLibs)
}现在,对于将optLibas构建为compile的任务:\
task createTomcatWar(type: War, dependsOn: classes) {
baseName = 'app-wildfly'
destinationDir = file("$buildDir/dist")
classpath = configurations.optLibs //This should include optLibs jars in WEB-INF/lib
}标准war任务在没有包含optLibs的情况下构建一个war,因此可以是您的野蝇war,您不需要另一个明确的任务。如果希望每次生成时都自动运行自定义任务,还可以添加到build.gradle的根级:
assemble.dependsOn createTomcatWarhttps://stackoverflow.com/questions/35119700
复制相似问题