Groovy 传播多个类的依赖关系
这个类位于文件Groovy 传播多个类的依赖关系,groovy,groovy-grab,Groovy,Groovy Grab,这个类位于文件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='
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
}
}
new StreamingPOIWriter()
.withPresentation()
.withSlide()
.write("presentation.pptx")
我使用groovyc
编译了它
但是当我决定在另一个文件中创建它的实例时-script.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
}
}
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
否则,如果您要构建更复杂的东西,我建议使用Gradlegradleinit
,在您的情况下,gradleinit--type groovy library
可能是您的朋友。好吧,这不是Grapes的初衷。正如您可能发现的那样,它们旨在运行单个脚本。如果您真的想做您现在正在做的事情,那么还可以将@Grapes注释添加到script.groovy
否则,如果您要构建更复杂的东西,我建议使用Gradlegradleinit
,在您的例子中,gradleinit--type groovy library
可能是您的朋友。我认为它与脚本有关。但我假设它可以以某种方式使用它的依赖项……毕竟它下载到.m2
文件夹中。我认为它与脚本相关。但我假设它可以以某种方式使用它的依赖项……毕竟它将它下载到.m2
文件夹中。