gpt4 book ai didi

java - Gradle -> 如何从 WEB-INF/lib 中省略一些 jar

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:46:51 24 4
gpt4 key购买 nike

我有一个子项目,其 war 规范如下所示:

war {
from('resources') {
include '*.properties'
into 'WEB-INF/classes/'
}
webXml = file('src/main/webapp/WEB-INF/web.xml')
}

效果很好。创建可部署到 Tomcat 的单个胖 war 文件。问题是,在部署到 TomEE 和 JBoss 时,我遇到了冲突(即与 Javax Servlet、Jersey 等)。所以我想排除一组 jar 被 war 。我查看了 Gradle war 文档,看起来我需要为此使用排除项。我尝试了两种不同的方式, jar 并没有被排除在 war 之外:

war {

// copy properties file in classes so that
// they may be loaded from classpath
from('resources') {
include '*.properties'
into 'WEB-INF/classes/'
}

// specify web xml
webXml = file('src/main/webapp/WEB-INF/web.xml')

// remove jars that conflict with TomEE
exclude '**/javax.inject-1.jar'
exclude '**/javax.servlet-2.5.0.v201103041518.jar'
exclude '**/servlet-api-2.5.jar'
exclude '**/validation-api-1.0.0.GA.jar'

}

这是在 github 上托管的 NetFlix/karyon 项目中的一个子项目 (karyon-examples) 中。子项目中的依赖项如下所示:

dependencies {
compile 'org.slf4j:slf4j-api:1.7.0'
runtime 'org.slf4j:slf4j-simple:1.7.0'
compile project(':karyon-extensions')
compile project(':karyon-admin-web')
}

而且我想避免编辑诸如编译依赖与运行时依赖之类的东西,尤其是在其他文件和子项目中。事实上,我试图在上面排除的 jar 在使用 jetty 和常规 tomcat 运行时是良性的。

我只是想排除这些 jar,而不会使构建脚本复杂化。我错过了什么?

谢谢

最佳答案

显而易见的方法是将您不想在 war 中拥有的依赖项从 compile 配置移动到 providedCompileruntimeprovidedRuntime。应用 war 插件时,提供的配置将添加到您的构建中。

上面代码段的另一个注意事项:我认为排除不起作用,因为您在排除语句中引用了目标路径,而应该只通过 /servlet-api-2.5.jar 引用它.

关于java - Gradle -> 如何从 WEB-INF/lib 中省略一些 jar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15841994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com