当前位置: 首页 > 面试题库 >

从普通Groovy迁移到Gradle

王高邈
2023-03-14
问题内容

我在Groovy中有一个正在工作的小应用程序。目前,我可以在命令行上对其进行测试,但是我需要将其与Jenkins服务器集成。因此,我考虑过将其与Gradle集成在一起,以Jenkins可以读取的标准格式生成测试输出。(请考虑一下,我是Groovy,Gradle,Jenkins和JVM环境的新手)。

目前,我所有的测试都位于一个MyTest扩展的类中GroovyTestCase。我可以用一些bash脚本来运行它

#! /bin/bash

DIR=$( cd "$( dirname "$0" )" && pwd )
LIBS="$DIR/lib/*"

groovy -cp "$LIBS" path/to/MyTest.groovy

在此布局中,有很多我不喜欢的东西:

  • 首先,我想将测试分为多个类,然后将它们加入一个测试套件,但是一个测试用例的优点是它可以在Groovy中自动运行
  • 第二,正如我所说,我希望能够获得一份供詹金斯使用的测试报告
  • 第三,我不知道将所有必需的jar放在lib目录中是否是一个好习惯-可能不是。

Gradle似乎正是我需要的工具。但是我发现的所有文档均假设您具有Java,Ant,Maven和整个生态系统的先前知识。

创建有效的Gradle项目的基本步骤是什么?

我已经按照这里的建议重新组织了目录结构,但是我不明白如何声明依赖关系。例如与此build.gradle

apply plugin: 'groovy'

repositories {
  mavenCentral()
}

dependencies {
  groovy group: 'org.codehaus.groovy', name: 'groovy', version: '1.8.0'
  runtime group: 'org.apache.log4j', name: 'log4j', version: '1.2.0'
}

我收到错误

unable to resolve class org.apache.log4j.Level
 @ line 5, column 1.
   import org.apache.log4j.Level
   ^

如果我将存储库更改为

repositories {
  mavenCentral()
  flatDir { dirs 'lib' }
}

获得log4j从我的lib目录,我得到

A problem occurred evaluating root project 'alfred'.
Cause: Could not find method flatDir() for arguments [build_3urmo05tgpv3e97u7h8ij47i3$_run_closure1_closure3@64c7f7c4] on root project 'alfred'.

问题答案:

迫在眉睫的问题是,您需要将log4j作为编译时依赖项导入。

解决办法是改变

runtime group: 'org.apache.log4j', name: 'log4j', version: '1.2.0'

compile group: 'org.apache.log4j', name: 'log4j', version: '1.2.0'

基本上,运行时依赖项使代码在运行时可用(用于反射,传递依赖项等),但在编译时不可用。如果要针对log4j进行编译,则需要编译时间。

编译时可用的所有内容在运行时自动可用。

接下来要做的是对Maven样式依赖项使用terser语法。

group: 'org.apache.log4j', name: 'log4j', version: '1.2.0'

可以表示为 'org.apache.log4j:log4j:1.2.0'

group: 'org.codehaus.groovy', name: 'groovy', version: '1.8.0'

可以表示为 'org.codehaus.groovy:groovy:1.8.0'

将它们放在一起,然后build.gradle文件应如下所示:

apply plugin: 'groovy'

repositories {
  mavenCentral()
}

dependencies {
  groovy 'org.codehaus.groovy:groovy:1.8.0'
  compile 'org.apache.log4j:log4j:1.2.0'
}


 类似资料:
  • 问题内容: 我们的Oracle数据库遇到了严重的性能问题,我们想尝试将其迁移到基于MySQL的数据库(直接使用MySQL,或者最好是Infobright)。 问题是,在我们实际上不知道新数据库的所有功能是否符合我们的需求之前,我们需要让旧系统和新系统至少重叠数周(如果不是几个月)。 因此,这是我们的情况: Oracle数据库由多个表组成,每百万行。白天,实际上有成千上万的语句,我们无法停止迁移。

  • 问题内容: 在我的应用程序中,我从UIWebView迁移到WKWebView,如何为WKWebView重写这些功能? 和 问题答案: UIWebView => WKWebView等效 关于您可以写: 对于:

  • 考虑: 为什么,我怎么才能让它起作用? 我的CPU是i5-10210u(支持AVX-256)。在X64版本/调试中运行。

  • TypeScript不是凭空存在的。 它从JavaScript生态系统和大量现存的JavaScript而来。 将JavaScript代码转换成TypeScript虽乏味却不是难事。 接下来这篇教程将教你怎么做。 在开始转换TypeScript之前,我们假设你已经理解了足够多本手册里的内容。 如果你打算要转换一个React工程,推荐你先阅读React转换指南。 如果你在写纯JavaScript,你大

  • 我正在将我的应用程序从Log4J1.2迁移到Log4J2-2.8.1版本。下面是log4j.properties文件中现有的1.x配置。

  • 我正在从log4j1迁移。由于最近的漏洞,x到log4j2。另一个依赖项似乎引用了旧的log4j1。x文件。 除了删除旧的log4j1. x文件之外,我还添加了log4j-core、log4j-api和log4j-1.2-api所有2.16版本。我查阅了迁移的留档https://logging.apache.org/log4j/2.x/manual/migration.html,并认为最后一个ja