如何显示 Gradle JavaExec 任务的 log4j 输出?
How do I display log4j output for a Gradle JavaExec task?
我想使用 Gradle 任务为 salesforce dataloader 执行 java 命令,这样我们就可以在一个独立的项目中完成数据加载任务。我已将数据加载器安装到我的本地 Maven 存储库中,并按如下方式设置我的 gradle 项目:
build.gradle:
apply plugin: 'groovy'
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
compile gradleApi()
compile 'com.force:dataloader:42.0.0'
compile 'org.codehaus.groovy:groovy-all:2.4.7'
}
task generateKey(type: JavaExec) {
classpath sourceSets.main.runtimeClasspath
main = 'com.salesforce.dataloader.security.EncryptionUtil'
args '-g', 'seedText'
}
问题
当我执行 gradle generateKey
时,任务成功完成,但显示了 EncryptionUtil 输出的 none。我怀疑这是因为数据加载器使用 log4j 记录器而不是直接打印到标准输出?我需要做一些进一步的配置吗?
我也试过一个直接调用 EncryptionUtil.main('-g', 'seedText')
的任务,但它也不会显示任何输出,除非我 运行 任务处于 --info 模式。
感谢您的帮助!我感谢反馈和我没有想到的任何选项。我们是一家 gradle 商店,但也许有更好的解决方案。
布拉格。我没有使用 ./gradlew
。往前走,没什么可看的。
为了将 log4j 配置注入到您的 javaexec 任务中,您需要使用以下结构(参见类路径参数):
//print you classpath fileCollection
sourceSets.main.runtimeClasspath.each { println it}
def result = javaexec {
logger.lifecycle "executing cli command PoC"
classpath sourceSets.main.runtimeClasspath //inject classpath
main = "io.github.rockitconsulting.test.rockitizer.cli.RockitizerCLI"
jvmArgs = ["-Dapp.home=${config.testProjectDir}"]
args = ["create-test","AlexOne"]
}
通过添加 log4j.xml 或 log4j.properties 添加目录它到 build.gradle 中的依赖块,如下所示:
dependencies {
runtime files(projectDir)
compile fileTree(dir: 'lib/ib10', include: '*.jar')
}
我想使用 Gradle 任务为 salesforce dataloader 执行 java 命令,这样我们就可以在一个独立的项目中完成数据加载任务。我已将数据加载器安装到我的本地 Maven 存储库中,并按如下方式设置我的 gradle 项目:
build.gradle:
apply plugin: 'groovy'
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
compile gradleApi()
compile 'com.force:dataloader:42.0.0'
compile 'org.codehaus.groovy:groovy-all:2.4.7'
}
task generateKey(type: JavaExec) {
classpath sourceSets.main.runtimeClasspath
main = 'com.salesforce.dataloader.security.EncryptionUtil'
args '-g', 'seedText'
}
问题
当我执行 gradle generateKey
时,任务成功完成,但显示了 EncryptionUtil 输出的 none。我怀疑这是因为数据加载器使用 log4j 记录器而不是直接打印到标准输出?我需要做一些进一步的配置吗?
我也试过一个直接调用 EncryptionUtil.main('-g', 'seedText')
的任务,但它也不会显示任何输出,除非我 运行 任务处于 --info 模式。
感谢您的帮助!我感谢反馈和我没有想到的任何选项。我们是一家 gradle 商店,但也许有更好的解决方案。
布拉格。我没有使用 ./gradlew
。往前走,没什么可看的。
为了将 log4j 配置注入到您的 javaexec 任务中,您需要使用以下结构(参见类路径参数):
//print you classpath fileCollection sourceSets.main.runtimeClasspath.each { println it} def result = javaexec { logger.lifecycle "executing cli command PoC" classpath sourceSets.main.runtimeClasspath //inject classpath main = "io.github.rockitconsulting.test.rockitizer.cli.RockitizerCLI" jvmArgs = ["-Dapp.home=${config.testProjectDir}"] args = ["create-test","AlexOne"] }
通过添加 log4j.xml 或 log4j.properties 添加目录它到 build.gradle 中的依赖块,如下所示:
dependencies { runtime files(projectDir) compile fileTree(dir: 'lib/ib10', include: '*.jar') }