gpt4 book ai didi

maven - 如何编译在运行时生成的java文件

转载 作者:行者123 更新时间:2023-12-01 10:36:15 25 4
gpt4 key购买 nike

我正在寻找编译在运行时由 Code Generate.java 生成的类。我成功地能够通过 exec-maven-plugin 在运行时运行 Generate.java。它在 generated-source-java 中生成代码。但是这段代码没有被编译。我也想将它们添加到一个 jar 中,因为我正在使用 maven-assembly-plugin。
这是我的 pom 快照。

    <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<id>build-test-environment</id>
<phase>generate-test-resources</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.test.Generate</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-sources-java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<finalName>test</finalName>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>

最佳答案

你很接近;插件需要绑定(bind)到不同的阶段。当前配置在 prepare-package 阶段添加新的源目录,这发生在所有内置编译完成之后。如果您将其配置为在生命周期的早期运行,我认为一切都会“正常工作”。

操作测试代码的阶段是:

  • 生成测试源
  • 处理测试源
  • 生成测试资源
  • 处理测试资源
  • 测试编译

对于这种情况,我将更改配置,如下所示:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<id>build-test-environment</id>
<phase>generate-test-sources</phase> <!-- generating source code -->
<!-- rest of config -->
</execution>
</executions>
<!-- rest of config, consider moving into specific execution -->
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-test-sources</id>
<phase>process-test-sources</phase> <!-- do something with generated test sources -->
<goals>
<goal>add-test-source</goal>
</goals>
<!-- rest of config -->
</execution>
</executions>

请注意,我也更改了 build-helper-maven-plugin 目标(更改为 add-test-source ),因为这是我们正在处理的测试代码。

Maven Lifecycle 中有更多详细信息概述文档。

关于maven - 如何编译在运行时生成的java文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47095488/

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