我正在開發一個庫,我需要在編譯之前自動生成.java文件。我發現了一個在maven-exec-plugin
,我以這種方式配置其如何在Maven中構建我的項目時執行已編譯的jar
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>generate-city-enum</id>
<phase>generate-sources</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<executable>java</executable>
<mainClass>org.codeforamerica.open311.city_enum_builder.EnumBuilder</mainClass>
<arguments>
<argument>-jar</argument>
<argument>city_enum_builder.jar</argument>
<argument>cities.json</argument>
<arguments>output.java</arguments>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
的問題是,運行mvn -e compile
我得到以下錯誤:
java.lang.ClassNotFoundException: org.codeforamerica.open311.city_enum_builder.EnumBuilder
然而,這是主類,和,實際上,如果我執行java -cp .:city_enum_builder.jar org.codeforamerica.open311.city_enum_builder.EnumBuilder cities.json output.java
它的作品。
另外,這個.jar不需要指定一個類來獲得執行(java -jar city_enum_builder.jar cities.json output.java
也適用)。
謝謝。
執行的時候''是在city_enum_builder.jar'你的classpath MVN -e compile'? – Lucas
它是在項目的根文件夾(從我執行'mvn'的地方),我跟着從這個[回答](http://stackoverflow.com/a/15282659/986257)的方法。它只提供了.jar路徑,對嗎? – Santi