gpt4 book ai didi

java - 如何在 Maven 中构建项目时执行已编译的 jar

转载 作者:行者123 更新时间:2023-12-01 14:19:23 28 4
gpt4 key购买 nike

我正在开发一个库,我需要在编译之前自动生成一个.java文件。我发现了maven-exec-plugin我是这样配置的

<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 也可以)。

谢谢。

最佳答案

我想您混淆了 exec:exec 的参数目标(产生外部进程) exec:java (它只是在 Mavens VM 中执行一些 Java 类)。

(因此,对于您的示例, <executable>java</executable> 将被忽略(因此不会调用 java.exe),并且显然您的类本身不知道如何解析类路径。

因此,将提供 city_enum_builder.jar 的项目添加为 exec-maven-plugin 的依赖项它应该可以工作。

别忘了检查http://mojo.codehaus.org/exec-maven-plugin/java-mojo.html了解更多详情。

关于java - 如何在 Maven 中构建项目时执行已编译的 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754735/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com