首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法在gradle ear中设置contextRoot

在Gradle的ear插件中,无法直接设置contextRoot。contextRoot是指Web应用程序在Web服务器上的根路径。然而,可以通过一些其他的方式来实现这个目标。

一种方法是使用war插件来构建war文件,然后将war文件添加到ear文件中。在war插件中,可以使用webAppDirName属性来指定Web应用程序的根目录。例如:

代码语言:txt
复制
apply plugin: 'war'
apply plugin: 'ear'

war {
    webAppDirName = 'src/main/webapp'
}

ear {
    from war
}

在这个例子中,将Web应用程序的根目录设置为src/main/webapp,然后将war文件添加到ear文件中。

另一种方法是使用自定义的脚本来构建ear文件。可以使用Java插件来编写一个自定义的任务,该任务将创建一个ear文件,并在其中添加war文件以及其他必要的文件和目录。在自定义任务中,可以使用Java的API来设置contextRoot。例如:

代码语言:txt
复制
apply plugin: 'java'

task createEar(type: Zip) {
    baseName = 'myapp'
    destinationDir = file('build')
    from('src/main/webapp') {
        into('web')
    }
    from('src/main/resources') {
        into('resources')
    }
    from('lib') {
        into('lib')
    }
    // 添加其他必要的文件和目录

    // 设置contextRoot
    doLast {
        def earFile = file("$destinationDir/$archiveName")
        def contextXml = new XmlParser().parse(earFile)
        contextXml.module.web[0].contextRoot = '/myapp'
        def writer = new StringWriter()
        new XmlNodePrinter(new PrintWriter(writer)).print(contextXml)
        earFile.text = writer.toString()
    }
}

assemble.dependsOn createEar

在这个例子中,创建了一个名为createEar的自定义任务,该任务使用Zip插件创建一个ear文件。在任务的最后,使用XmlParser和XmlNodePrinter来修改ear文件中的contextRoot。

需要注意的是,这些方法都是基于Gradle的插件和任务来实现的,而不是直接在ear文件中设置contextRoot。这是因为ear文件是一个压缩文件,其中包含了多个模块(如war文件、jar文件等),而不是一个简单的配置文件。因此,无法直接在ear文件中设置contextRoot。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Android Gradle 插件】组件化Gradle 构建脚本实现 ③ ( Gradle 构建脚本实现 AndroidManifest.xml 清单文件切换设置 )

二、 Gradle 构建脚本实现 AndroidManifest.xml 清单文件切换设置 在上一篇博客 【Android Gradle 插件】组件化Gradle 构建脚本实现 ① ( 组件化简介...| 创建组件化应用 | 依赖库模块 / 应用模块 切换设置 ) 最后提到了 Gradle 构建脚本 , 需要实现 依赖库模块 / 应用模块 切换设置 , 主要涉及如下两个方面 : build.gradle...构建脚本 切换设置 , 切换 应用 / 依赖库 ; AndroidManifest.xml 清单文件 切换设置 , 设置 启动 Activity 项 ; 【Android Gradle 插件】组件化的...一、AndroidManifest.xml 清单文件切换设置 ---- 应用 , 每个应用 只能有一个 启动 Activity , 如果有多个肯定会报错 ; 组件化 : 模块化模式 : 正常的模式...Gradle 构建脚本实现 AndroidManifest.xml 清单文件切换设置 ---- 模块下 的 build.gradle 构建脚本 的 " android#sourceSets#main

2.1K50

gradle构建java项目

简介 之前的文章我们讲到了gradle的基本使用,使用gradle的最终目的就是为了构建java项目。今天本文将会详细的讲解如何在gradle构建java项目。...两者build.gradle的不同在于plugins的不同,application的plugin是: plugins { id 'application' } 而library的plugin...和maven一样,我们gradle中指定依赖需要指定依赖的名字和版本号,依赖的范围:是运行时依赖还是编译时依赖,还有一个重要的就是在哪里可以找到这个library。...testImplementation:test的编译和运行时使用。 testRuntimeOnly: test的运行时使用。...我们需要将这些配置文件拷贝到特定的目标目录。 默认情况下,gradle会拷贝src/[sourceSet]/resources 的文件到目标文件夹

1.8K51
  • gradle构建java项目

    简介 之前的文章我们讲到了gradle的基本使用,使用gradle的最终目的就是为了构建java项目。今天本文将会详细的讲解如何在gradle构建java项目。...两者build.gradle的不同在于plugins的不同,application的plugin是: plugins { id 'application' } 而library的plugin...和maven一样,我们gradle中指定依赖需要指定依赖的名字和版本号,依赖的范围:是运行时依赖还是编译时依赖,还有一个重要的就是在哪里可以找到这个library。...testImplementation:test的编译和运行时使用。 testRuntimeOnly:test的运行时使用。...我们需要将这些配置文件拷贝到特定的目标目录。 默认情况下,gradle会拷贝src/[sourceSet]/resources 的文件到目标文件夹

    1.3K31

    gradle构建java项目

    简介 之前的文章我们讲到了gradle的基本使用,使用gradle的最终目的就是为了构建java项目。今天本文将会详细的讲解如何在gradle构建java项目。...两者build.gradle的不同在于plugins的不同,application的plugin是: plugins { id 'application' } 而library的plugin...和maven一样,我们gradle中指定依赖需要指定依赖的名字和版本号,依赖的范围:是运行时依赖还是编译时依赖,还有一个重要的就是在哪里可以找到这个library。...testImplementation:test的编译和运行时使用。 testRuntimeOnly: test的运行时使用。...我们需要将这些配置文件拷贝到特定的目标目录。 默认情况下,gradle会拷贝src/[sourceSet]/resources 的文件到目标文件夹

    1.6K30

    Gradle依赖方式——LombokGradle的正确配置姿势

    写过java的都知道,lombok几乎项目中处于不可或缺的一部分,但是lombokGradle的项目中配置并非人人都知道。...很多人在项目依赖中直接这样写 compile "org.projectlombok:lombok:1.18.4" 但这样的处理Gradle 5.0以上被命令禁止了,4.x的高级版本编译时也会有对应的告警...并且在打jar/war包的时候,并不需要把lombok的依赖打进包,所以Lombok依赖上应该是compile only(仅在编译时生效)才对。...Gradle 5.0环境下,我们尝试下改成 compileOnly "org.projectlombok:lombok:1.18.4" 然后执行gradle build。...5.0的环境下,注解处理将不再compile classpath,需要手动添加到annotation processor path。

    12K41

    【Android Gradle 插件】Gradle 构建机制 ⑤ ( Android Studio 查看 Android Gradle 插件源码 )

    , 输入工程名称 ; 二、修改 build.gradle 构建脚本 ---- 将根目录下的 build.gradle 构建脚本的 dependencies 依赖的 classpath "com.android.tools.build...:gradle:4.2.1" 注释掉 , 不需要依赖 Android Gradle 插件 ; 然后进入 app 模块目录 , 删掉除 build.gradle 脚本之外的其它代码 ; 打开 app...:gradle:4.2.1 依赖 ; 编辑完成后 , 点击右上角的 " Sync Now " 按钮 , 进行 Gradle 配置 ; 配置完成后 , 即可在 Project 面板的 External...Libraries 中看到 Gradle:com.android.tools.build:gradle:4.2.1 依赖库 , 展开该 gradle-4.2.1.jar 的包 , 即可查看源码 ,...AppExtension 源码如下图右侧所示 ; 右键点击该依赖库 , 弹出的菜单中选择 " Library Properties… " 选项 , 可以看到该源码的详细地址 : C:\Users

    1.7K40

    Deno 设置 CronJob

    废话太多,还是先看看 Deno 的 CronJob 如何写"Hello World". ❞ 什么是 CronJob CronJob即定时任务,就类似于Linux系统的crontab,指定的时间周期运行指定的任务...本质上CronJob是一个调度程序,使应用程序可以调度作业特定日期或时间自动运行。今天,我们将把CronJob集成到Deno应用程序,有兴趣看看吗?...安装 Deno 前面的文章基本都没有提及 Deno 的安装,国内,我们使用 "vscode-deno 之父“JJC大佬为我们提供的镜像服务进行安装,地址为https://x.deno.js.cn/,...取值范围为0-59 第二个星号使用分钟数,并且取值范围为0-59 第三个星号使用小时数,其值介于0-23之间 第四个星号为月份的一天,其值1-31之间 第五个星号为一年的月份,其值1-12之间...*', () => { // run some task console.log('This is a same thing', i++) }); deno cron 当然,除了设置

    2.7K30

    NPM 设置代理

    命令提示符或终端,输入以下命令以设置代理:```npm config set proxy http://ip.duoip.cn:8080```这个命令将设置 NPM 的代理地址。1....设置代理后,请确保您的网络设置允许访问该代理。 Windows 系统,您可以通过以下步骤检查和配置网络设置:a. 右键单击 "网络" 图标在任务栏上,然后选择 "网络和共享中心"。b.... "网络和共享中心" 窗口中,单击 "更改连接属性"。c. "网络连接属性" 窗口中,选择 "使用代理服务器",然后单击 "设置"。d.... "代理服务器" 窗口中,输入代理地址,然后单击 "确定"。1. 对于 macOS 和 Linux 系统,您需要根据您的系统和网络设置配置代理。在这些系统,通常需要编辑配置文件以添加代理设置。...设置代理后,请确保您的 NPM 设置已正确保存。命令提示符或终端,输入以下命令:```npm config list```这将显示您的 NPM 配置设置

    1.8K40

    【Android Gradle 插件】Gradle 自定义 Plugin 插件 ⑥ ( buildSrc 模块依赖 Android Gradle 插件 | 完整代码示例 )

    文章目录 一、 buildSrc 模块依赖 Android Gradle 插件 二、完整代码示例 Android Plugin DSL Reference 参考文档 : Android Studio...自定义 Gradle 插件 - GitHub 地址 : https://github.com/han1202012/Android_UI 一、 buildSrc 模块依赖 Android...插件相关的 API ; 如果我们想要依赖其它的 函数库 , 可以 buildSrc 模块下 , 自己创建 build.gradle 构建脚本 ; 如果想要在 buildSrc 模块的代码 , 使用...之后 , 可以 buildSrc 模块调用 Android Gradle 模块的 API ; // 获取 自定义 Gradle 插件的扩展属性 , 必须在 Gradle 分析完成之后才能进行...插件】Gradle 自定义 Plugin 插件 ⑤ ( 自定义插件获定义方法 | 插件创建 Gradle 任务 | 代码示例 ) 博客 ; GitHub 地址 : https://github.com

    97530

    【Android Gradle 插件】Gradle 自定义 Plugin 插件 ⑤ ( 自定义插件获定义方法 | 插件创建 Gradle 任务 | 代码示例 )

    一、自定义插件定义普通方法 ---- 自定义 Gradle 插件 的 Extension 扩展 , 可以定义方法 , 定义的方法可以带参数 , 也可以不带参数 ; 代码示例如下 : class...println 'MyPluginExtensions extensionFun : ' + str } } 自定义插件 , 关联该扩展 : // 创建一个扩展...def myplugin = project.extensions.create("myplugin", MyPluginExtensions) build.gradle 引入插件 , 并调用该扩展的方法...Gradle 任务 Task ---- Android Studio 的 Gradle 面板的 Task 任务 , 都是 Android Gradle 插件定义的 , 自定义插件 , 也可以自定义...build.gradle 构建脚本引入插件 ; apply plugin: MyPlugin 编译应用 , 可以看到 HelloMyTask 任务 preBuild 之后 , preDebugBuild

    1.8K20
    领券