为多个 类 传播葡萄依赖项
propagate grape dependencies for multiple classes
我有这个 class 位于文件 StreamingPOIWriter.groovy
@Grapes([
@Grab(group='org.apache.poi', module='poi', version='3.14'),
@Grab(group='org.apache.poi', module='poi-ooxml', version='3.14'),
@Grab(group='org.apache.poi', module='poi-ooxml-schemas', version='3.14')
])
import org.apache.poi.xslf.usermodel.XMLSlideShow
import org.apache.poi.xslf.usermodel.XSLFSlide
class StreamingPOIWriter {
XMLSlideShow presentation
def withPresentation() {
presentation = new XMLSlideShow()
this
}
def write(filename) {
presentation.write(new FileOutputStream(filename))
}
def withSlide() {
XSLFSlide slide = presentation.createSlide()
this
}
}
我用groovyc
编译的。
但是当我决定在另一个文件中创建它的实例时 - script.groovy
new StreamingPOIWriter()
.withPresentation()
.withSlide()
.write("presentation.pptx")
当我使用 groovy script.groovy
找到 运行 它时,我得到了这个错误
Caught: java.lang.NoClassDefFoundError: org/apache/poi/xslf/usermodel/XMLSlideShow
java.lang.NoClassDefFoundError: org/apache/poi/xslf/usermodel/XMLSlideShow
at script.run(script.groovy:2)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.xslf.usermodel.XMLSlideShow
... 1 more
似乎无法找到 StreamingPOIWriter
所需的依赖项。
如何将它们传播到 script.groovy
?
StreamingPOIWriter.groovy
和 script.groovy
在同一文件夹中。
嗯,这不是 Grapes 的本意。正如您可能发现的那样,它们旨在 运行 单个脚本。如果你真的想做你现在正在做的事情,也可以将 @Grapes 注释添加到 script.groovy
。
否则,如果您要构建更复杂的东西,我建议您改用 Gradle。 gradle init
,在你的情况下,可能 gradle init --type groovy-library
是你的朋友。
我有这个 class 位于文件 StreamingPOIWriter.groovy
@Grapes([
@Grab(group='org.apache.poi', module='poi', version='3.14'),
@Grab(group='org.apache.poi', module='poi-ooxml', version='3.14'),
@Grab(group='org.apache.poi', module='poi-ooxml-schemas', version='3.14')
])
import org.apache.poi.xslf.usermodel.XMLSlideShow
import org.apache.poi.xslf.usermodel.XSLFSlide
class StreamingPOIWriter {
XMLSlideShow presentation
def withPresentation() {
presentation = new XMLSlideShow()
this
}
def write(filename) {
presentation.write(new FileOutputStream(filename))
}
def withSlide() {
XSLFSlide slide = presentation.createSlide()
this
}
}
我用groovyc
编译的。
但是当我决定在另一个文件中创建它的实例时 - script.groovy
new StreamingPOIWriter()
.withPresentation()
.withSlide()
.write("presentation.pptx")
当我使用 groovy script.groovy
找到 运行 它时,我得到了这个错误
Caught: java.lang.NoClassDefFoundError: org/apache/poi/xslf/usermodel/XMLSlideShow
java.lang.NoClassDefFoundError: org/apache/poi/xslf/usermodel/XMLSlideShow
at script.run(script.groovy:2)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.xslf.usermodel.XMLSlideShow
... 1 more
似乎无法找到 StreamingPOIWriter
所需的依赖项。
如何将它们传播到 script.groovy
?
StreamingPOIWriter.groovy
和 script.groovy
在同一文件夹中。
嗯,这不是 Grapes 的本意。正如您可能发现的那样,它们旨在 运行 单个脚本。如果你真的想做你现在正在做的事情,也可以将 @Grapes 注释添加到 script.groovy
。
否则,如果您要构建更复杂的东西,我建议您改用 Gradle。 gradle init
,在你的情况下,可能 gradle init --type groovy-library
是你的朋友。