gpt4 book ai didi

java - 使用 maven-hibernate3 插件生成源代码

转载 作者:行者123 更新时间:2023-11-30 11:56:00 26 4
gpt4 key购买 nike


除了生成其他源文件外,我还想为 DAO 类生成一个工厂类 - DAOFactory.java。为此,我正在使用 hbmtemplate - 使用我自己的 *.ftl 文件。问题是(我理解正确)文件是为数据库中的每个实体生成的。是否可以只生成一次该文件?

我的 pom.xml 的一部分:

<execution>
<id>hbmtemplate0</id>
<phase>generate-sources</phase>
<goals>
<goal>hbmtemplate</goal>
</goals>
<configuration>
<components>
<component>
<name>hbmtemplate</name>
<outputDirectory>src/main/java</outputDirectory>
</component>
</components>
<componentProperties>
<revengfile>/src/main/resources/hibernate.reveng.xml</revengfile>
<propertyfile>src/main/resources/database.properties</propertyfile>
<jdk5>false</jdk5>
<ejb3>false</ejb3>
<packagename>my.package.name</packagename>
<format>true</format>
<haltonerror>true</haltonerror>
<templatepath>src/main/resources/reveng.templates/</templatepath>
<filepattern>DAOFactory.java</filepattern>
<template>DAOFactory.java.ftl</template>
</componentProperties>
</configuration>
</execution>

最佳答案

a) 生成的代码通常不应该放在 src/main/java!!!! 使用 target/generated-sources/somefoldername (或者更确切地说:${project.build.directory}/generated-sources/somefoldername)代替!否则,您生成的代码将最终出现在您的 SCM 中,那时事情会变得一团糟。根据经验:您编辑的所有内容都在 src 中,maven 创建或编辑的所有内容都在 target 中

如果 hibernate 工具不自动将生成的源代码目录添加到编译器的源代码根目录,您可以使用 buildhelper-maven-plugin 来实现:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>add-source</id>
<phase>process-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>
${project.build.directory}/generated-sources/somefoldername
</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>

b) 看来您不能将其限制为单个类。因此,您可以做的一件事是删除不需要的生成的 java 文件。执行此类操作的标准方法是使用 antrun 插件:

<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>process-sources</phase>
<configuration>
<target>
<delete>
<fileset
dir="${project.build.directory}/generated-sources/somefoldername"
includes="**/*.java" excludes="**/ClassYouWantToKeep.java" />
</delete>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>

关于java - 使用 maven-hibernate3 插件生成源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4725416/

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