war - Gradle - 部署描述符中的 Web 模块

标签 war ear gradle

我正在尝试在 Ear 文件中添加一个 Web 模块。我使用 webModule(":wars/myweb","/mywebapp") 将它放在我的自定义部署描述符中。它不包括ear 文件中的war 文件。它只是在生成的 application.xml 中添加一个带有这些详细信息的条目。
您能否使用定制的部署描述符帮助在耳朵中包含一个 Web 模块?

我的耳朵任务在 build.gradle 中看起来像这样

ear {
libDirName ''
deploymentDescriptor {
    // custom entries for application.xml:
    //      fileName = "application.xml"  // same as the default value
    version = "1.4"  // same as the default value
    applicationName = "myapp"
    initializeInOrder = true
    displayName = "myear"  // defaults to project.name
    description = "EAR for the basic package"  // defaults to project.description
    webModule(':wars/myweb','/mywebapp')

}

}

我的 settings.xml 在与 build.gradle 相同的目录中看起来像这样
include "wars/myweb"

感谢你的帮助。

最佳答案

我使用这种方式将 war 依赖关系与 webModules 联系起来。 warMap 提供了工件 id 和上下文路径之间的连接:

Map warMap = [
    'my-war': 'contextpath',
    'my2-war': 'contextpath2'
}
dependencies {
    warMap.each {
        deploy project(":$it.key")
    }
}
ear {
    deploymentDescriptor {
        warMap.each {
            webModule(it.key + '-' + project.version + ".war", it.value)
        }
    }
}

关于war - Gradle - 部署描述符中的 Web 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7364302/

相关文章:

gradle - 如何指定 RoboVM Gradle 使用的临时配置文件?

android - Android项目中的循环依赖

java - 自动生成代码并出现错误

gradle - 使用 Gradle 将依赖项打包到 WAR 中,同时将临时依赖项留在 EAR 中

deployment - 无法在 WebLogic 上的 EAR 中部署 WAR

java - Gradle war定制-文件夹名称

configuration - 如何在单个EAR中为不同的 war 配置多个log4j?

jakarta-ee - 带有 unpackWARs ="false"的 Tomcat 无法部署基于 CDI Weld 的应用程序

jakarta-ee - 在没有 WAR 的情况下在 EAR 中部署多个 "Web Fragment"项目

java - 由于不同的类加载器,在同一个耳朵中从两个不同的 war 中加载相同的类时出现 ClassCastException