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

无法在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 构建机制 ⑤ ( 在 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.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

    99930

    【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

    在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.7K30

    【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依赖方式——Lombok在Gradle中的正确配置姿势

    写过java的都知道,lombok几乎在项目中处于不可或缺的一部分,但是lombok在Gradle的项目中配置并非人人都知道。...很多人在项目依赖中直接这样写 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。

    12.7K41

    在Atom中设置Python开发环境

    image.png 在Atom中设置Python开发环境 当然,网络上有很多很棒的文本编辑器。Sublime Text,Bracket,Atom等。...一旦你的代码长达数百行,可能很难找到你在代码库中的位置。Minimap提供整个代码的“缩小”视图,并突出显示代码中的位置,将整个可视化功能保存在Atom编辑器中的简明侧边栏中。...安装此软件包后,可能需要单击设置并选择“保存时格式化”选项。这也需要您在命令行上使用pip完成安装,正如您在文档中看到的那样。...这允许您使用“command + i”键盘快捷键在Atom编辑器中运行脚本。代码将在文本编辑器底部的面板中运行。...def test_prime(n): // 函数体 函数调用的另一个主要区别在于:在JavaScript中,函数内部的工作始终在花括号之间,遵循参数;而在Python中,函数以冒号开头,而不是花括号

    4.9K80

    在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

    在 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 配置设置。

    2.2K40

    在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

    在 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
    领券