當執行一個gradle任務時,我得到一個ClassNotFoundException: org.apache.ivy.core.report.ResolveReport
,它使用Grapes
來解決依賴關係。Gradle在GroovyShell中使用Eclipse執行Groovy腳本Luna
我使用Eclipse的月神4.4.0如果是本的build.gradle一個搖籃/ Groovy項目:
apply plugin: 'groovy'
apply plugin:'application'
mainClassName = "de.my.app.package.Main"
version = 0.5
repositories { mavenCentral() }
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.4.3'
compile group: 'org.apache.ivy', name:'ivy', version:'2.2.0'
compile 'commons-io:commons-io:2.4'
compile 'commons-codec:commons-codec:1.2'
}
task myTask << {
def groovyShell = new GroovyShell()
groovyShell.run(file('/src/scripts/groovy/de/my/app/package/scripts/SomeScript.groovy'))
}
classes.finalizedBy(myTask)
我Java Build Path
內Project->Properties
看起來是這樣的:
這是SomeScript.groovy
裏面的文件夾/src/scripts/groovy/de/my/app/package/scripts
:
package de.my.app.package.scripts
@Grapes(
@Grab(group='org.eclipse.birt.runtime.3_7_1', module='org.apache.commons.codec', version='1.3.0')
)
@Grapes(
@Grab(group='commons-io', module='commons-io', version='2.4')
)
import org.apache.commons.codec.binary.Hex
println Hex.toString()
奇怪的是,從cmd
與groovy SomeScript.groovy
執行SomeScript.groovy
不給錯誤。所以我猜測這是我錯過的一些Eclipse配置。
SomeScript.groovy
build.gradle
可以執行SomeScript.groovy
而不會導致ClassNotFoundException: org.apache.ivy.core.report.ResolveReport
?