簡體   English   中英

從Maven執行Groovy腳本

[英]Executing Groovy script from Maven

從Maven執行Groovy腳本時,出現以下錯誤:

[錯誤]無法在項目/ path / to / project上執行目標org.codehaus.groovy.maven:gmaven-plugin:1.0:execute(默認):org.codehaus.groovy.runtime.metaclass.MissingPropertyExceptionNoStack:無此類屬性:類的項目:/ path / to / groovy / script / Example-> [幫助1]

我搜索了可能的原因解決方案 ,但仍然不明白我在做什么錯以及如何解決。 當我獨立執行腳本或通過ANT腳本執行腳本時,腳本運行良好。

這是腳本:

class Example {
   public static void main(String[] args){
       new Example().show();
   }

   def show() {
       println 'Hello World'
  }
}

這就是我所說的:

<dependencies>
    <dependency>
        <groupId>org.codehaus.gmaven.runtime</groupId>
        <artifactId>gmaven-runtime-1.7</artifactId>
        <version>1.3</version>
        <exclusions>
             <exclusion>
                 <groupId>org.codehaus.groovy</groupId>
                 <artifactId>groovy-all</artifactId>
             </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>1.7.6</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.groovy.maven</groupId>
            <artifactId>gmaven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>execute</goal>
                    </goals>
                    <configuration>
                        <source>${pom.basedir}/path/to/script/Test.groovy</source>
                    </configuration>
                </execution>
            </executions>
        </plugin>

只要您能夠訪問默認變量(而不是使其成為POGO),就可以將腳本直接添加到Example.groovy文件中。

腳本最終以與文件名相同的名稱本身單獨編譯為groovy類(在本例中為Example )。 我對類和psvm的整個概念表示懷疑。 :-)

//Example.groovy
println 'hello world'

println "$project"
println "$session"
println "$settings"

無論出於何種原因,gmaven-plugin似乎都不像main

如果你像這樣編碼

class Example {
   def show() {
       println 'Hello World'
   }
}
new Example().show();

它會工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM