Gradle ear 放的是 JAR 而不是 WAR
Posted
技术标签:
【中文标题】Gradle ear 放的是 JAR 而不是 WAR【英文标题】:Gradle ear is putting JAR instead of WAR 【发布时间】:2013-02-27 22:26:33 【问题描述】:我正在尝试使用 Gradle 构建 ear。 我的项目树如下:
/project
|
|--> /web-application
| |
| |--> /src (stuff of web app)
| |
| |--> build.gradle
|
|--> build-gradle
|--> settings.gradle
我正在尝试使用 ear 插件 生成耳朵,但是当我执行 gradle assemble
时,我在 build 下创建了 war web-application 的 em> 目录,但是在生成的 ear 里面我有一个 web 应用程序的 jar。
gradle 的配置文件很简单,这里是:
project/build.gradle
apply plugin: 'ear'
repositories
mavenCentral()
dependencies
deploy project(':web-application')
earlib group: 'log4j', name: 'log4j', version: '1.2.15', ext: 'jar'
项目/web-application/build.gradle
apply plugin: 'war'
repositories
mavenCentral()
dependencies
compile group: 'log4j', name: 'log4j', version: '1.2.15', ext: 'jar'
我做错了什么?
我注意到war插件的捆绑样本也有同样的问题...... 提前致谢
【问题讨论】:
【参考方案1】:您可以避免为每个 deploy 依赖项指定配置,使用如下方式:
allprojects
plugins.withType(WarPlugin)
// Set default configuration as WAR archive if WAR plugin is used
configurations
'default'
extendsFrom = [archives]
...
dependencies
deploy project(':web-application')
【讨论】:
【参考方案2】:解决了!
需要在EAR项目中配置WAR模块为:
dependencies
deploy project(path:':web-application', configuration:'archives')
earlib group: 'log4j', name: 'log4j', version: '1.2.15', ext: 'jar'
【讨论】:
文档中有参考吗? 我不记得我在哪里采用了那个解决方案,而且文档有点混乱...... 配置文档:gradle.org/docs/current/dsl/…以上是关于Gradle ear 放的是 JAR 而不是 WAR的主要内容,如果未能解决你的问题,请参考以下文章
使用 gradle bootJar 而不是 jar 任务并在 Jenkins 中构建失败
如何使用shadowJar gradle插件而不是maven发布将胖JAR发布到JitPack
如何使用 Gradle 中的本地 JUnit Jar 而不是 Maven Central?