Java tomcat和wildfly的Gradle战争依赖项

Java tomcat和wildfly的Gradle战争依赖项,java,tomcat,amazon-web-services,gradle,wildfly,Java,Tomcat,Amazon Web Services,Gradle,Wildfly,在build.gradle中,我通过一个脚本为tomcat和wildfly构建战争。Wildfly提供了对“javax.mail:mail:1.4.7”的依赖关系。但是tomcat缺少这个jar。所以我总是将这个jar添加到${CATALINA_HOME}/lib/。目前我正试图从这两个jar迁移到Amazon AWS Elastic Beanstalk,我不想弄乱${CATALINA_HOME}/lib/。如何使用以下工具为wildfly编写通用gradle脚本: dependencies {

在build.gradle中,我通过一个脚本为tomcat和wildfly构建战争。Wildfly提供了对“javax.mail:mail:1.4.7”的依赖关系。但是tomcat缺少这个jar。所以我总是将这个jar添加到${CATALINA_HOME}/lib/。目前我正试图从这两个jar迁移到Amazon AWS Elastic Beanstalk,我不想弄乱${CATALINA_HOME}/lib/。如何使用以下工具为wildfly编写通用gradle脚本:

dependencies {
....
providedCompile group: 'javax.mail', name: 'mail', version: '1.4.7'
providedCompile group: 'javax.activation', name: 'activation', version: '1.1.1'
...
}
对于tomcat,请使用:

dependencies {
...
compile group: 'javax.mail', name: 'mail', version: '1.4.7'
compile group: 'javax.activation', name: 'activation', version: '1.1.1'
...
}
我不是格雷德尔的专家


@愤怒解决了我的问题。下面的代码是“42”号的最终解决方案


添加一个附加配置以保存范围更改的依赖项:

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
的war的任务:\

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任务生成的war不包含optLibs,因此可以作为您的wildfly war,您不需要另一个显式任务。如果您希望自定义任务在每次生成时自动运行,您还可以添加到生成的根级别。gradle:

assemble.dependsOn createTomcatWar

我认为您应该能够创建两个不同的
类型的任务:War
,并根据需要修改每个任务中的War配置。您有任何此类任务的代码示例吗?激活并不是真正需要的,它是JDK本身的一部分,因为1.6尚未测试,请告诉我这对您有何影响。
assemble.dependsOn createTomcatWar