Начни кроовыш с заданием gradle
У нас есть Java-проект для контроля качества научных данных, который использует gradle в качестве инструмента для сборки.
Я хотел бы запустить интерактивную оболочку Groovy из простой задачи, загруженной с моего пути к классам проекта, чтобы иметь возможность использовать инфраструктуру проекта для выполнения таких задач, как манипулирование данными в системе и т. Д.
Я посмотрел на этот вопрос, на который есть принятый ответ, и постараюсь следовать ему, но задачи завершаются немедленно, вместо ожидания ввода. Это мой текущий build.gradle:
configurations {
console
}
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.akhikhl.gretty:gretty:2.0.0'
}
}
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'org.akhikhl.gretty'
apply plugin: 'eclipse-wtp'
war {
webAppDirName = 'WebApp/WebContent'
}
gretty {
servletContainer = 'tomcat8'
enableNaming = true
}
repositories {
jcenter()
maven {
url "http://repository.primefaces.org"
}
}
dependencies {
compile "org.primefaces:primefaces:6.0"
compile "org.primefaces.themes:cupertino:1.0.10"
compile 'joda-time:joda-time:2.7'
compile 'javax.el:javax.el-api:3.0.0'
compile 'mysql:mysql-connector-java:5.1.36'
compile 'commons-validator:commons-validator:1.4.1'
compile 'org.apache.commons:commons-email:1.4'
compile 'org.apache.commons:commons-lang3:3.4'
compile 'org.apache.commons:commons-math3:3.6'
//
compile 'commons-codec:commons-codec:1.3'
compile 'commons-beanutils:commons-beanutils:1.8.3'
compile 'commons-collections:commons-collections:3.2'
compile 'commons-digester:commons-digester:1.8'
compile 'commons-logging:commons-logging:1.1.1'
//
compile 'commons-fileupload:commons-fileupload:1.3.1'
compile 'org.apache.myfaces.core:myfaces-api:2.2.8'
compile 'org.apache.myfaces.core:myfaces-impl:2.2.8'
compile 'org.apache.myfaces.core:myfaces-bundle:2.2.8'
// gretty plugin handling the tomcat server
gretty 'org.apache.tomcat:tomcat-dbcp:8.0.1'
gretty 'org.apache.tomcat:tomcat:8.0.1'
// Use JUnit test framework
testImplementation 'junit:junit:4.12'
// console dependencies
console 'commons-cli:commons-cli:1.4'
console('jline:jline:2.14.+') {
exclude(group: 'junit', module: 'junit')
}
console 'org.codehaus.groovy:groovy-groovysh:2.4.+'
}
sourceSets {
main {
java {
srcDirs = ['WebApp/src', 'src/QC_Routines/src']
}
resources {
srcDirs = ['WebApp/WebContent/resources']
}
}
test {
java {
srcDirs = ['WebApp/junit']
}
}
}
task(console, dependsOn: 'classes') {
doLast{
def classpath = sourceSets.main.runtimeClasspath + configurations.console
def command = [
'java',
'-cp', classpath.collect().join(System.getProperty('path.separator')),
'org.codehaus.groovy.tools.shell.Main',
'--color', '--terminal', 'unix'
]
def proc = new ProcessBuilder(command)
.redirectOutput(ProcessBuilder.Redirect.INHERIT)
.redirectInput(ProcessBuilder.Redirect.INHERIT)
.redirectError(ProcessBuilder.Redirect.INHERIT)
.start()
proc.waitFor()
if (0 != proc.exitValue()) {
throw new RuntimeException("console exited with status: ${proc.exitValue()}")
}
}
}
Когда я запускаю консольную задачу, она завершается после успешной сборки:
$./gradlew console
СТРОИТЬ УСПЕШНО в 2с
3 действенных задания: 1 выполнено, 2 актуально
Любые предложения о том, почему это не работает, или как действовать? Версии программного обеспечения ниже:
$ gradle - версия
Gradle 4.4.1
Время сборки: 2017-12-20 15:45:23 UTC Редакция: 10ed9dc355dc39f6307cc98fbd8cea314bdd381c
Groovy: 2.4.12
Ant: Apache Ant (TM) версии 1.9.9, скомпилирован 2 февраля 2017 г.
JVM: 1.8.0_151 (Oracle Corporation 25.151-b12)
ОС: Linux 4.13.0-32-generic amd64