Maven不编译target / hibernate3 / generated-sources

时间:2010-05-26 21:05:03

标签: hibernate maven-2 hibernate3 hbm2java

有人可以告诉我如何配置maven以便从target/hibernate3/generated-sources目录编译源代码吗?我已经阅读了this和其他帖子,但它们似乎没有解决我的问题(这看起来确实很简单)。

我已经使用自下而上的方法来为cfg.xml,hbm.xml和POJO生成hibernate配置(即从现有数据库模式中自动生成完整的hibernate配置)。我也只使用标准的mavenhibernate3-plugin目录布局。但是,当我的源位于mvn compile时,在命令行中执行src/main/java/target/hibernate3/generated-sources中生成的源只有来自src/main/java的源被编译并复制到target/classes {1}}。我不希望在src/main/java中生成源代码,因为我希望mvn clean清除它们。

我想仅使用command-linepluginspom.xml来解决问题。有没有办法配置maven-compiler-plugin这样做?还是有另一种方式?

关心并感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

惯例是在target/generated-sources/<generator>生成代码,所以在你的情况下,我会在target/generated-sources/hibernate3生成源代码(很遗憾hibernate3插件默认不遵循这个约定)。无论如何,事情应该有效,实际上,我在this previous answer发布的POM确实如此(我重新运行了我的示例项目,它确实有效)。你能成为MHIBERNATE-104的受害者吗?老实说,我很困惑。

作为一种变通方法,您可以使用Build Helper Maven Plugin及其build-helper:add-source目标将目录添加为源目录。有关配置示例,请参阅Usage页面。


  

我正在使用你在这里提出的pom,只是没有插入默认的构建生命周期(没有执行)。

这一定是问题的原因:如果hibernate3:hbm2java不是构建生命周期的一部分,它就没有机会将输出目录注册为源文件夹。因此,Maven在“正常构建”期间并未意识到它,并且会忽略它。