java - 通过在 Maven 中运行项目的 java 类来生成源代码

标签 java maven-2 code-generation

我正在将大型 Ant 构建转换为 Maven。作为 Ant 构建的一部分,我们有几个步骤通过调用项目的一个类来创建 Java 类,简化为:

javac SomeGenerator.java
java  SomeGenerator  generated # generate classes in generated/
javac generated/*.java

我已将每个生成器拆分到其自己的 Maven 模块中,但我遇到了无法运行生成器的问题,因为它尚未在 generate-sources 阶段编译。

我试过类似的东西

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.1.1</version>
            <executions>
                <execution>
                    <id>generate-model</id>
                    <goals>
                        <goal>java</goal>
                    </goals>
                    <phase>generate-sources</phase>

                    <configuration>
                        <mainClass>DTOGenerator</mainClass>
                        <arguments>
                            <argument>${model.generated.dir}</argument>
                        </arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>

遗憾的是,由于上述原因,这行不通。将代码生成器分别分成两个项目,一个用于编译生成器,另一个用于生成 DTO,这似乎有点过分了。

有哪些替代方案?


使用 Maven 2.2.1。

最佳答案

你可以在generate-sources阶段执行maven-compile-plugin。只需在现有执行之前添加另一个执行并配置它,以便它只为生成器获取源。

或者将项目一分为二:使用单独的 POM 构建生成器,并将生成器库作为生成源的 POM 的依赖项包含在内。

我个人会拆分项目。使构建文件更干净,更易于维护。

关于java - 通过在 Maven 中运行项目的 java 类来生成源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2147115/

相关文章:

c# - 我可以建议 "Generate method stub"在 Visual C# 中存储新生成的代码的位置吗?

java - 是否有基于 hibernate 实体 XML 生成 java 源代码(实体)类的 Maven 插件?

eclipse - Eclipse 中的代码生成

java - 使用软链接(soft link)通过 -classpath 开关导入 jar

Java 日期格式

jakarta-ee - java.lang.ClassFormat错误: Illegal class name "groovy/jmx/builder/package-info" in class file groovy/jmx/builder/package-info

java - JCA 连接器 1.6 的 Maven 位置

java - 如何使用MVC注解?

java - java contains() 方法使用什么算法?

java - Maven Exec 插件不在 Windows 上使用系统路径?