iso*_*tel 17 java jar war gradle
我有一个多项目Gradle构建结构,其中子项目依赖于JAR,我不想在WAR文件中.我试过"排除"但它不起作用.
主要项目脚本:
apply plugin: 'war'
war {
dependencies {
runtime (project(':childProject')) {
exclude group: 'javax.servlet.jsp', module: 'jsp-api'
}
}
}
Run Code Online (Sandbox Code Playgroud)
childProject脚本:
apply plugin: 'java'
dependencies {
compile 'javax.servlet.jsp:jsp-api'
}
Run Code Online (Sandbox Code Playgroud)
Joh*_*int 23
从Gradle文档中
War插件添加了两个依赖配置:providedCompile和providedRuntime.这些配置与相应的编译和运行时配置具有相同的范围,除了它们未添加到WAR归档中.
因此,换句话说,添加一个条目providedCompile或providedRuntime将导致从war文件中排除该依赖项.
providedCompile,如果你有依赖于某些类编译源providedRuntime,如果你用它来测试,而不是进行编译.http://www.gradle.org/docs/current/userguide/war_plugin.html
例
providedCompile "javax.servlet:servlet-api:2.5"
d-s*_*uer 20
我是这样做的.
war {
rootSpec.exclude("**/some-*.jar")
}
Run Code Online (Sandbox Code Playgroud)
我意识到provideCompile有时会为我引入依赖项问题,例如找不到某些类.然后我想出了一个更灵活的解决方案.
我们可以将所需的依赖项配置为"compile",然后使用以下war配置从war文件中排除特定的jar:
war {
classpath = classpath.filter { file ->
println file.name
(
!file.name.startsWith('gwt-dev') &&
!file.name.startsWith('gwt-user') &&
!file.name.startsWith('guava-gwt') &&
!file.name.startsWith('gwtbootstrap3') &&
!file.name.startsWith('gwtbootstrap3-extras') &&
!file.name.startsWith('servlet-api')
)
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现这对我来说是最干净的解决方案.我希望它有所帮助.
| 归档时间: |
|
| 查看次数: |
22387 次 |
| 最近记录: |