首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tomcat和野蝇的分级战争依赖关系

tomcat和野蝇的分级战争依赖关系
EN

Stack Overflow用户
提问于 2016-01-31 21:28:33
回答 1查看 892关注 0票数 2

在build.gradle中,我通过一个脚本为tomcat和野蝇构建战争。Wildfly提供了对"javax.mail:mail:1.4.7'.的依赖,但tomcat缺少了这个jar。所以我总是将这个jar添加到${CATALINA_HOME}/lib/中。目前,我正试图从这两个jar迁移到Amazon ElasticBean秸秆,并且我不想弄乱${CATALINA_HOME}/lib/.如何为通配符编写通用的gradle脚本:

代码语言:javascript
复制
dependencies {
....
providedCompile group: 'javax.mail', name: 'mail', version: '1.4.7'
providedCompile group: 'javax.activation', name: 'activation', version: '1.1.1'
...
}

对猫来说:

代码语言:javascript
复制
dependencies {
...
compile group: 'javax.mail', name: 'mail', version: '1.4.7'
compile group: 'javax.activation', name: 'activation', version: '1.1.1'
...
}

我不是gradle的专家。

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

代码语言:javascript
复制
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
}
....
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-31 21:58:26

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

代码语言:javascript
复制
configurations {
 optLibs
}

将依赖项添加到刚才创建的配置中:

代码语言:javascript
复制
dependencies{
  ...
  optLibs 'javax.mail:mail:1.4.7'
  optLibs 'javax.activation:activation:1.1.1'
  compile 'foo'
  runtime 'bar'
  ...
  providedCompile.extendsFrom(optLibs)
}

现在,对于将optLibas构建为compile的任务:\

代码语言:javascript
复制
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的根级:

代码语言:javascript
复制
assemble.dependsOn createTomcatWar
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35119700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档