【问题标题】:Gradle ear is putting JAR instead of WARGradle ear 放的是 JAR 而不是 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插件的捆绑样本也有同样的问题...... 提前致谢

【问题讨论】:

    标签: war gradle ear


    【解决方案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'
      }
      

      【讨论】:

      • 文档中有参考吗?
      • 我不记得我在哪里采用了那个解决方案,而且文档有点混乱......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      相关资源
      最近更新 更多